簡體   English   中英

如何在循環中運行 qt 主 window 避免 Qt app.exec() 阻塞主線程

[英]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.

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