[英]how to run qt main window in loop avoid Qt app.exec() blocking main thread
我是 Qt 的新手,但需要解決一個難題。
需要在循環中運行 qt 主 window ,其中 app.exec() 將阻塞主 function 直到收到退出。 但我想根據收到的事件在循環中顯示和隱藏主 window 以隱藏和顯示主 window
這是示例代碼,現在我正在使用示例:
void main(int argc, char **argv)
{
//QT window init
w.setVisible(true);
app.exec();
}
可以調用 qt window 的時間初始化並在循環中隱藏和顯示嗎?
我需要添加while循環,基於事件隱藏或顯示主window將顯示和隱藏
void main(int argc, char **argv)
{
//QT window init
w.setVisible(true);
app.exec();
while(1)
{
//if show status received
if(show)
w.setVisible(true);
// if hide window status received
else if(hide)
w.setVisible(false);
}
}
如何讓 app.exe 一直處於活動狀態以實現 window 的隱藏/顯示? 還有其他 QT api 電話嗎?
對於這種情況,Qt 推薦的解決方案是添加一個 QTimer 並將超時設置為零,這將保證您的回調在每個循環中都被調用。
要讓您的應用程序執行空閑處理,即在沒有未決事件時執行特殊的 function,請使用具有 0 超時的 QTimer。 使用 processEvents() 可以實現更高級的空閑處理方案。
https://doc.qt.io/qt-5/qapplication.html#exec
您可以 go 勇敢地繼承 QApplication 並復制/粘貼 exec() 的源代碼,但我強烈建議您不要這樣做,因為其中的准備和清理代碼可以在任何新版本中更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.