我從Qt開始,對於應用程序狀態我不清楚。我使用Qt 5.5。我目前在Windows上學習,但Android設備是下一步,因此我關注應用程序狀態。Qt應用程序狀態生命週期
我已經創建了我自己的QApplication
派生類,我已經註冊了applicationStateChanged
信號。我已經猜到,當applicationStateChanged
發信號時,我應該堅持部分配置。我想我將不得不使用Qt.labs.settings
以及我想要使用QML。
顯然,我錯了幾件事情。首先,我沒有收到任何Qt::ApplicationSuspended
消息。
我已經覆蓋到QApplication::event(e)
爲了看看我是否錯過了一個信號,似乎只發送了Quit
事件。
QML debugging is enabled. Only use this in a safe environment.
void LAACApplication::event(QEvent *e = QEvent(LanguageChange, 0x28fd00))
void LAACApplication::event(QEvent *e = QEvent(DynamicPropertyChange, 0x28fcbc))
void LAACApplication::event(QEvent *e = QEvent(LanguageChange, 0x28fa70))
void LAACApplication::event(QEvent *e = QEvent(ApplicationActivate, 0x28daf4))
void LAACApplication::event(QEvent *e = QApplicationStateChangeEvent(ApplicationActive))
void LAACApplication::onApplicationStateChanged(Qt::ApplicationState state = Qt::ApplicationState(ApplicationActive))
void LAACApplication::event(QEvent *e = QEvent(Quit, 0x1fd88cc8))
void LAACApplication::event(QEvent *e = QEvent(LanguageChange, 0x28fca0))
或者,也許我應該考慮QApplication::commitData()
如說,爲了執行這樣的任務here?
所以,要簡短:我應該如何處理應用程序狀態更改與Qt?
這是我的代碼:
laacapplication.h
#ifndef LAACAPPLICATION_H
#define LAACAPPLICATION_H
#include <QApplication>
class LAACApplication : public QApplication
{
Q_OBJECT
public:
explicit LAACApplication(int &argc, char **argv);
public slots:
void onApplicationStateChanged(Qt::ApplicationState state);
protected:
bool event(QEvent * e);
private:
void readSettings();
void writeSettings();
};
#endif // LAACAPPLICATION_H
laacapplication.cpp
(片段)
void LAACApplication::onApplicationStateChanged(Qt::ApplicationState state)
{
qDebug() << "void LAACApplication::onApplicationStateChanged(Qt::ApplicationState state =" << state << ")";
if (Qt::ApplicationSuspended == state)
writeSettings();
}
bool LAACApplication::event(QEvent *e)
{
qDebug() << "void LAACApplication::event(QEvent *e =" << e << ")";
return QApplication::event(e);
}
main.cpp
順便說一句,我沒有成功地使用我的信號和我的插槽之間的自動連接,因此有一個明確的電話QObject::connect()
。
(來自編輯隊列re [this edit](http://stackoverflow.com/review/suggested-edits/13526506))這裏的慣例是在句子結尾和相應的問號之間不要留空格。我已經改進了您的編輯以刪除這些空格,認爲它可能對您瞭解原因很有用。 – jaggedSpire