我可以允许从Qt中的任何地方打开窗口吗?

Can I allow opening windows from everywhere in Qt?

本文关键字:方打 任何地 开窗口 Qt 我可以      更新时间:2023-10-16

我有以下情况,我想显示一些小部件。

我的主要窗口主要是文本编辑器。
我有一个名为"运行"的操作,它解释文本并执行某些操作。
可能的结果之一是需要打开一个窗口。它可以工作,但窗口仅在run函数(我作为插槽)返回后显示。

我必须打开一个窗口的另一种情况是,我想成为同一个解释器从控制台输入运行的解释器。但是在这种情况下打开窗口会导致以下错误:

QObject: Cannot create children for a parent that is in a different thread.
(Parent is Oxygen::WidgetStateEngine(0xee2d90), parent's thread is QThread(0xda53b0), current thread is QThread(0x7f2178004000)
QObject::installEventFilter(): Cannot filter events for objects in a different thread.

我该怎么做才能以某种方式"集中"窗口操作,以免发生这种情况?

所有 GUI 对象都将在主线程中创建。您可以使用静态方法QApplication::topLevelWidgets()从代码中的任何位置访问QMainWindow实例