这是我第一次使用Qt IDE,但遇到了问题。 我有两个通过接口连接的类。一个是ContrGeral,另一个是IAAutenticacao。 ContrGeral打开主窗口。为了使IAAutenticacao类运行另一个窗口(或对其进行更新),ContrGeral类如何知道它已执行的show函数内部发生了什么? 我遵循接口的概念,所以我不能只是在MainWindow类(由ContrGeral创建)中放置一系列动作。我需要它以某种方式通知ContrGeral。 由于打开窗口的显示功能不会返回任何东西,也不会收到任何东西,因此我不知道该怎么办。
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();
}
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()上,一旦执行便不返回任何内容。
提前谢谢。
答案 0 :(得分:1)
您需要更多有关Qt signals and slots
的知识。请先阅读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 **/
}
希望它对您有帮助。