簡體   English   中英

在另一個線程中的回調中顯示狀態欄上的消息

[英]Show message on statusbar from a callback in a different thread

我試圖在我的應用程序的狀態欄上顯示一些連接/斷開連接的消息。 它是一個用c ++編寫的控制台應用程序,帶有Qt GUI。 當連接狀態發生變化時,連接處理程序會調用回調(在某些gui相關對象中),這會更新GUI。 我可以在我的QGraphicsScene上繪制,但是當我嘗試使用QStatusBar的showMessage方法時,有時會立即崩潰,有時它會工作直到幾次調用(但是超時過后消息不會消失)。 我收到此錯誤消息:

QObject: Cannot create children for a parent that is in a different thread.
(Parent is QStatusBar(0xae55feb0), parent's thread is QThread(0xb3e006f0), current thread is QThread(0xb0c00478)
QObject::startTimer: QTimer can only be used with threads started with QThread
QPixmap: It is not safe to use pixmaps outside the GUI thread

我認為這意味着不會從GUI線程調用showMessage。 那我怎么能在狀態欄上顯示連接狀態變化?

您不能從非GUI線程進行直接GUI調用。 您需要做的是設置信號/插槽連接。 在實現連接處理程序的類中創建一個信號,並將其連接到狀態欄的showMessage()槽。 如果要在狀態欄上顯示某些內容,請發出信號並傳遞相應的消息。

暫無
暫無

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

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