2010-11-22 15 views
1

以下はメニューキーの押下をシミュレートするためのコード・ブロックです。QT:ユニットテストセグメンテーション障害

std::auto_ptr<MyForm> mainForm(new MyForm(3, 3)); 
mainForm->show(); 

:私は自分のアプリケーションを表示する最初:(....

を私は深く自分のアプリケーションのメニューに移動することができますが、私は戻って、メインフォームに取得するとき、私はsegmetationエラーを取得しています

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()の結果を確認して

答えて

1

スタート。ドキュメントから...

には、アプリケーションウィンドウ がフォーカスを持っていない場合は、キーボード入力 フォーカスを持っている、または0アプリケーションのトップレベル ウィンドウを返します。そのウィンドウには ウィジェットがキー イベントを受け付けていない場合など)何 focusWidgetが(存在しない場合でも)( のActiveWindowがあるかもしれません。