2016-08-20 24 views
2

在我的项目的某些部分,我想从打开的窗口列表中获取窗口的参考。 所以,我这样做是这样的:如何从打开的窗口列表中检索QWidget

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()){ 
        ^

而我卡在这里。

+0

尝试添加'的#include '到文件的高效解决方案在文件中

#include <QApplication> 

指令,其中'WindowUtil ::主窗口()'被定义为。 – Sergey

+0

现在它的工作;) –

+0

我已经在其他地方使用过'QApplication',并且不需要#include。也许这是因为这个WindowUtil类与QT没有关系。我对吗 ? –

回答

2

尽管答案已经发布为评论,但这个错误应该表示(大多数情况下)您没有包含正确的头文件,在这种情况下:<QApplication>并且您的应用无法找到它的声明想。这就提出了一个错误应该是你的问题:)