我有一個程序在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