2016-08-20 9 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

は '' WindowUtil ::メインウィンドウ()ファイルに ''書式#include <はQApplication>を追加しようが定義される。 – Sergey

+0

これはうまくいきました;) –

+0

私は 'QApplication'をどこかで使っていましたが、#includeは必要ありませんでした。このWindowUtilクラスがQTと関係がないためです。私は正しい? –

答えて

2

答えが既にコメントとして投稿されているにもかかわらず、このエラーは、あなたが右のヘッダーファイルを含めていないことを意味するはずです(この場合、<QApplication>)。あなたのアプリケーションは、望む。

#include <QApplication> 

エラーがあなたの問題のための効率的な解決策であるべき提起ファイル内の命令:)

関連する問題