C++ 让一个对象知道它在show函数中发生了什么';他创造了

C++ 让一个对象知道它在show函数中发生了什么';他创造了,c++,qt,C++,Qt,这是我第一次使用Qt IDE,我遇到了一个问题。 我有两个通过接口连接的类。一个是控制器,另一个是控制器。控制器打开主窗口。类ContrGeral如何知道它所执行的show函数中发生了什么,以便使类IAAUTICICAO运行另一个窗口(或更新它)? 我遵循接口的概念,所以我不能只在MainWindow类(由ContrGeral创建)中放置一系列操作。我需要它把情况以某种方式通知承包商。 由于打开窗口的show函数既不返回也不接收任何内容,我不知道该怎么办 main.cpp #include "w

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

main.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();
}
#包括“windows.h”
#包括“controladoras.h”
#包括
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
中央电视台;
tela_inical.mostra();
返回a.exec();
}
控制崇拜者

#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
\ifndef CONTROLADORAS\u H
#将控制定义为
#包括“interfaces.h”
#包括“dominios.h”
#包括“windows.h”
#包括
#包括
使用名称空间std;
类CntrGeral{
私人:
IAAutenticacao*Cntriautenticacao;
Iausario*cntrIAUsuario;
IAEventos*cntrIAEventos;
主窗口;
公众:
无效设定(无效设定*);
无效Setiusario(Iausario*);
void setIAEventos(IAEventos*);
void mostra();
};
void inline CntrGeral::setIAAutenticacao(IAAutenticacao*cntrIAAutenticacao){
此->CNTRIAAUTENTICAAO=CNTRIAAUTENTICAAO;
}
void内联CntrGeral::setIAEventos(IAEventos*cntrIAEventos){
此->cntrIAEventos=cntrIAEventos;
}
void inline CntrGeral::setIAUsuario(IAUsuario*cntriausario){
这->cntriausario=cntriausario;
}
void inline CntrGeral::mostra(){
in-icial.show();
}
#endif//CONTROLADORAS\u H
问题出在inicial.show(),一旦执行,它就不会返回任何内容


提前感谢。

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

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

  • 首先在类中添加插槽
    CntrGeral
controladors.h

class-CntrGeral{
...
公众时段:
在MainWindowPressButton()上无效;
...
}
  • 然后连接并添加插槽的实现:
controladors.cpp

CntrGeral::CntrGeral()
{
...
//连接例如“按钮”(QPushButton的对象)
//哪个是主窗口对象“inicial”的成员
连接(专用按钮、信号(释放()),
在MainWindowPressButton()上单击此按钮;
...
}
CntrGeral::onMainWindowPressButton()
{
/**按下按钮后的待办事项**/
}

希望它对您有所帮助。

您到底想知道在
主窗口中发生了什么事情
?例如,如果我在主窗口中按下一个按钮,ContrGeral类如何接收输入?这就是我们的目的。