2016-08-20 25 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>並且您的應用無法找到它的聲明想。這就提出了一個錯誤應該是你的問題:)