這是一個gui應用程序中的舊技術,但它可能適用於您。
使用QObject::startTimer(0)
然後重新實現QObject :: timerEvent()來獲得various components that rely on a fully constructed application object
。通過這樣做,various components that rely on a fully constructed application object
只會在事件循環開始時創建。
的解釋一點:QObject的:: startTimer所(INT MS)是運行在毫秒計時器一個觸發間隔毫秒功能。如果您將「0」作爲參數傳遞,那麼只要事件循環開始,它就會觸發。一旦觸發,它會調用同一個類中的QObject :: timerEvent(),調用QObject :: startTimer()。確保在QObject :: timerEvent()的重新實現中使用QObject :: killTimer()停止定時器,否則定時器將無限激發。
但@Mat有一點,只是因爲事件循環還沒有開始,並不意味着QCoreApplication沒有完全構建。試試看看這個。
{
QApplication app(argc, argv); //this is already a fully contructed QApplication instance
MyClass *myObject = new MyClass; //this relies on a fully constructed QApplication instance
return app.exec(); //this starts the event loop as you already know.
}
這聽起來很好,但我真的不明白爲什麼你需要排隊的信號。您不需要運行事件循環來構建小部件,它們只是不會顯示出來。 – Mat
在構建任何小部件之前需要完成一些支持框架。該框架需要一個完整的構造函數Application對象。 –