У меня есть программа на 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';
}
};
Теперь, насколько я понимаю, это должно соединить сигнал от объекта QGuiApplication
с функцией слота в объекте MyApp
. Но я явно делаю что-то не так, так как во время выполнения жалуется, что сигнал не существует:
QObject::connect:
No such signal QObject::applicationStateChanged(Qt::ApplicationState)
in Prog.cpp:16
Qobject::
в имени сигнала немного беспокоит. Я бы подумал, что это будет QGuiApplication
, но, поскольку я новичок в этом материале Qt, я не уверен, что это проблема.
Как правильно подключить этот сигнал, чтобы изменение состояния приложения привело к вызову stateChanged
?