我有一个程序在Qt5中,它只是创建和运行我的类(我认为它必须是一个类,利用信号/插槽机制但我不知道这是有关我的具体问题):Qt5信号捕获到插槽产生运行时错误“信号不存在”
int main(int argc, char *argv[]) {
MyApp myApp;
return myApp.run(argc, argv);
}
在类本身,我实例化一个QGuiApplication
,然后试图捕捉其状态更改信号:
class MyApp : public QObject {
public:
MyApp() { }
~MyApp() { }
int run(int argc, char *argv[]) {
QGuiApplication app(argc, argv);
connect(
app, SIGNAL(applicationStateChanged(Qt::ApplicationState)),
this, SLOT(stateChanged(Qt::ApplicationState)));
// blah blah blah
return app.exec();
}
public slots:
void stateChanged(Qt::ApplicationState newState) {
std::cout << "State changed to " << newState << '\n';
}
};
现在,从我的理解,这应该c将来自QGuiApplication
对象的信号连接到MyApp
对象中的插槽功能。但我明明做错事,因为它的抱怨在运行时,信号不存在:
QObject::connect:
No such signal QObject::applicationStateChanged(Qt::ApplicationState)
in Prog.cpp:16
在信号名称的Qobject::
是有点担心的。我原以为它会是QGuiApplication
但是,因为我是这个Qt新手,我不确定这是否是一个问题。
连接该信号的正确方法是什么,以便应用程序状态的更改会导致stateChanged
被调用?
这不完全支持建立一个QCoreApplication,顺便之前创建的QObject。你为什么有这种奇怪的封装? – peppe