QT:ユニットテストのセグメンテーションフォールト
-
27-09-2019 - |
質問
以下はメニューのキーの押下をシミュレートするためのコードブロックです。私は自分のアプリケーションのメニューの中に深くナビゲートすることができますが、私は、メインフォームに戻ったとき、私はsegmetationエラーを取得しています....:(
最初の私は自分のアプリケーションを表示します:
std::auto_ptr<MyForm> mainForm( new MyForm( 3, 3 ));
mainForm->show();
そして、KeyPressイベントは、メインメニューを表示するためにシミュレートします:
QTest::keyPress(mainForm.get(), Qt::Key_0, NULL, 300);
QTest::keyRelease(mainForm.get(), Qt::Key_0, NULL, 300);
QWidget *pWin = QApplication::activeWindow();
QCOMPARE(QString(pWin->objectName()), QString("MainMenu"));
そして、私のメインのアプリケーションに戻って別のキー押下をシミュレートします:
QTest::keyPress(pWin, Qt::Key_Escape, NULL, 300);
QTest::keyRelease(pWin, Qt::Key_Escape, NULL, 300);
pWin = QApplication::activeWindow();
QCOMPARE(QString(pWin->objectName()), QString("MainForm"));
私はセグメンテーションフォールトを取得しています場所です...缶誰もがこのエラーの原因となっているものを教えて?
解決
QApplication::activeWindow()
の結果をチェックして起動します。ドキュメントから..
は、アプリケーションのトップレベルを返します。 キーボード入力を持つウィンドウ フォーカス、または0なしアプリケーションウィンドウの場合 フォーカスを持っています。あるかもしれません 何があっても)(のActiveWindowません focusWidget()、例えばなりません そのウィンドウ内のウィジェットは、キーを受け入れます イベントます。
所属していません StackOverflow