如何在动态创建的QWidget上安装eventFilter?

时间:2014-07-25 11:44:46

标签: c++ multithreading qt events qwidget

我只有一个QMainWindow和mainwindow.ui,我有桌子,按钮等...... 从一个按钮我想动态创建小部件并在其上设置evenFilter。

QWidget dialog = new QWidget();
dialog->installEventFilter(this);

当我编译程序时它会说QObject::installEventFilter(): Cannot filter events for objects in a different thread.

如何将此小部件添加到与其他Qobjects的线程或什么是此问题的最佳解决方案?

1 个答案:

答案 0 :(得分:0)

你不应该从非gui线程创建gui小部件。

创建QWidget的子类并在那里安装eventFilter,放入信号以返回结果。

然后将信号从您的线程发送到主线程插槽以创建此QWidget dialog = new MyWidget()并根据需要使用。