【发布时间】:2016-08-20 13:34:21
【问题描述】:
在我的项目的某些部分,我想从打开的窗口列表中获取窗口的引用。 所以,我是这样做的:
QWidget* WindowUtil::mainWindow() {
QWidget* main_window = nullptr;
for(QWidget *window: QApplication::allWidgets()){
if(QString(window>metaObject()->className()).contains("Home")){
main_window = window;
break;
}
}
return main_window;
}
WindowUtil 是我项目的类,mainWindow() 是静态方法。
但是,此解决方案不起作用。编译器说:
error: incomplete type 'QApplication' used in nested name specifier
for(QWidget *window : QApplication::allWidgets()){
^
我被困在这里了。
【问题讨论】:
-
尝试将
#include <QApplication>添加到定义WindowUtil::mainWindow()的文件中。 -
我在其他地方使用过
QApplication,不需要#include。也许是因为这个 WindowUtil 类与 QT 没有关系。我说的对吗? -
我不知道
WindowUtil类是什么,但可能是的。当您认为您没有包含QApplication标头时,您实际上是隐含地包含了它,因为它包含在其他一些文件中,这些文件包含在您使用QApplication的文件中。#include指令是递归的。例如,尝试将任何文件包含到自己(没有包含保护),您将收到类似“#include nested too deep”之类的错误。