是否可以从其他线程隐藏qt小部件窗口

Is it possible to hide qt widget window from other thread?

本文关键字:qt 小部 窗口 隐藏 线程 其他 是否      更新时间:2023-10-16

是否可以从其他线程隐藏qt小部件窗口?
例如,如果使用ptr->window->hide();
从其他线程崩溃并显示错误:

无法将事件发送到其他线程拥有的对象...

在这种情况下应该使用信号和插槽还是更容易。 替代方案?

是否可以从其他线程隐藏Qt小部件窗口?

当然,您所需要的只是将工作线程上的信号与 UI 线程上的插槽连接起来。幸运的是,QWidget::hide已经是一个插槽(甚至不需要将其包装在自己的插槽中(。

// in WorkerQObject.h file:
class WorkerQObject : public QObject
{
   Q_OBJECT
public:
     ///
signals:
       void hideUI();
private:
     ///
};
// in WorkerQObject.cpp file:
WorkerQObject::WorkerQObject()
{
    // thread initialization; move to thread etc.
    connect(this, SIGNAL(hideUI()), pWidget, SLOT(hide()));
}
void WorkerQObject::methodOnWorkerThread()
{
    emit hideUI();
}