3

我正在尝试在我的应用程序的状态栏上显示一些已连接/已断开连接的消息。它是一个用 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。那么如何在状态栏上显示连接状态的变化呢?

4

1 回答 1

4

不允许从非 GUI 线程进行直接 GUI 调用。您需要做的是设置信号/插槽连接。在实现连接处理程序的类中创建一个信号,并将其连接到showMessage()状态栏的插槽。当您想在状态栏上显示某些内容时,发出信号并传递适当的消息。

于 2012-11-27T13:21:54.170 回答