簡體   English   中英

關閉 Qt 控制台應用程序會終止 exec() 調用內的進程,並且不會從 main() 范圍外擴展

[英]Closing Qt console application terminates process inside exec() call and doesn't reach to scope out from main()

這是我在Qt控制台應用程序中Qt的問題:

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    MyApp app;
    app.start();

    return a.exec();
} // <== MyApp destructor must be called to free up resourcs but not reach here

Qt 版本: 5.4.1

平台: Windows 10

我已經在Window 7遇到了這個問題並且沒有解決這個問題。

問題是exec調用在退出主事件循環后使用exit系統調用在 Windows 中終止進程並且不返回。

另一個解決方案,例如使用QCoreApplication類的aboutToQuit信號不起作用。

直接來自Qt 文檔

我們建議您將清理代碼連接到 aboutToQuit() 信號,而不是將它放在應用程序的 main() 函數中,因為在某些平台上 exec() 調用可能不會返回。 例如,在 Windows 上,當用戶注銷時,系統會在 Qt 關閉所有頂級窗口后終止進程。 因此,無法保證應用程序在 exec() 調用之后有時間退出其事件循環並在 main() 函數的末尾執行代碼

你說你試過aboutToQuit()沒有運氣,但你絕對應該專注於aboutToQuit()工作。 您能否更新粘貼的代碼以包含 aboutToQuit 嘗試,以便我們可以為您提供幫助?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM