gpt4 book ai didi

c++ - 让对象知道它创建的显示函数内部发生了什么

转载 作者:行者123 更新时间:2023-11-28 04:16:22 24 4
gpt4 key购买 nike

这是我第一次使用 Qt IDE,我遇到了一个问题。我有两个通过接口(interface)连接的类。一个是 ContrGeral,另一个是 IAAutenticacao。 ContrGeral 打开主窗口。 ContrGeral 类如何知道它已执行的 show 函数内部发生了什么,以便使 IAAutenticacao 类运行另一个窗口(或更新它)?我遵循接口(interface)的概念,所以我不能只在 MainWindow 类(由 ContrGeral 创建)中放置一系列操作。我需要它以某种方式通知 ContrGeral 有关情况。由于打开窗口的 show 函数既不返回也不接收任何东西,我不知道该怎么做。

主要.cpp

#include "windows.h"
#include "controladoras.h"
#include <QApplication>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
CntrGeral tela_inicial;
tela_inicial.mostra();

return a.exec();
}

controladores.h

#ifndef CONTROLADORAS_H
#define CONTROLADORAS_H

#include "interfaces.h"
#include "dominios.h"
#include "windows.h"
#include <QApplication>

#include <stdexcept>

using namespace std;

class CntrGeral {
private:
IAAutenticacao *cntrIAAutenticacao;
IAUsuario *cntrIAUsuario;
IAEventos *cntrIAEventos;
MainWindow inicial;

public:
void setIAAutenticacao(IAAutenticacao *);
void setIAUsuario(IAUsuario *);
void setIAEventos(IAEventos *);

void mostra();

};

void inline CntrGeral::setIAAutenticacao(IAAutenticacao *cntrIAAutenticacao) {
this->cntrIAAutenticacao = cntrIAAutenticacao;
}

void inline CntrGeral::setIAEventos(IAEventos *cntrIAEventos) {
this->cntrIAEventos = cntrIAEventos;
}

void inline CntrGeral::setIAUsuario(IAUsuario *cntrIAUsuario) {
this->cntrIAUsuario = cntrIAUsuario;
}

void inline CntrGeral::mostra() {
inicial.show();
}

#endif // CONTROLADORAS_H

问题出在 inicial.show() 上,一旦执行它就不会返回任何东西。

提前致谢。

最佳答案

您需要更多关于 Qt 信号和槽 的知识。阅读 this之前。

然后您可以按如下方式进行连接:

  • 首先在你的类 CntrGeral 中添加插槽:

controladores.h

class CntrGeral {
...
public slots:
void onMainWindowPressButton();
...
}
  • 然后连接并添加插槽的实现:

controladores.cpp

CntrGeral::CntrGeral()
{
...
// connect for example "pushButton" (a QPushButton's object)
// Which is a member of your MainWindow's object "inicial"
connect(inicial.pushbutton, SIGNAL(release()),
this, onMainWindowPressButton());
...
}
CntrGeral::onMainWindowPressButton()
{
/** TODO after push button pressed **/
}

希望对你有帮助。

关于c++ - 让对象知道它创建的显示函数内部发生了什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56510058/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com