質問

以下はメニューのキーの押下をシミュレートするためのコードブロックです。私は自分のアプリケーションのメニューの中に深くナビゲートすることができますが、私は、メインフォームに戻ったとき、私は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()、例えばなりません   そのウィンドウ内のウィジェットは、キーを受け入れます   イベントます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top