2010-11-18 13 views
7

私はキープレスをシミュレートするテストアプリを書いています。キーが押されるたびに表示されるウィンドウを取得したいと思います。ここにコードブロックがあります。Qt:現在実行中のウィンドウを取得するにはどうすればよいですか?

std::auto_ptr<MyForm> pForm(new MyForm(3,3)); 
QTest::keyPress(pForm.get(), Qt::Key_0); 

ここに0を押すと、ウィンドウはつもりショーアップしていると私はそれが私がQCompare /は後でそれを評価することができそうである何ウィンドウをチェックしたいと思います。

すべてのアイデア?

更新日:

を私はすべてのあなたの窓は、あなたのアプリケーションを介して作成されている場合は、私が

std::auto_ptr<MyForm> pForm(new MyForm(3,3)); 
QTest::keyPress(pForm.get(), Qt::Key_0); 
QWidget *pWin = QApplication::activeWindow(); 
QCOMPARE(pWin->windowTitle(), QString("My Second Menu")); 

答えて

8

を使用する場合、あなたはQApplicationクラスを使用することができますセグメンテーションフォールトを取得しています。 たとえば、activeWindow()関数は、入力フォーカスを持つウィジェットを返します。しかし、あなたを助けることができる他の多くの機能があります。

希望すること

+0

+1これは正しい解決策です。 – Venemo

+0

セグメンテーションフォルトが発生しています。私は何か間違っている可能性があります...上記のコードブロックを更新しました... :( – Owen

+3

ドキュメントに説明されているように、ウィンドウに入力フォーカスがない場合、戻りポインタはnullになることがあります。ウィジェット。テストウィンドウにQTextEditを追加しようとする。 –

関連する問題