QTest ライブラリを使用して自動テスト アプリケーションを作成しています。QDialogButtonBox (保存、およびキャンセル) を持つウィンドウに到達する場合を除いて、アプリケーションでキーの押下をシミュレートできます。ここに私のサンプルコードがあります:
std::auto_ptr<MainForm> myForm( new MainForm( 3, 3 ));
myForm->show();
QTest::keyPress(myForm.get(), Qt::Key_0, NULL, 1000);
QTest::keyRelease(myForm.get(), Qt::Key_0, NULL, 100);
QWidget *pWin = QApplication::activeWindow();
QCOMPARE(QString(pWin->objectName()), QString("MyMainForm"));
次のウィンドウに到達すると、入力フォーカスがテキスト編集コントロールにあるいくつかのコントロールが表示されます。Enterキーを押すと、「保存」ボタンが押されます。理論的には、 Qt::Enter をフォームに渡す必要がある場合は、「保存」ボタンも押す必要があります。ただし、keyPress を渡そうとすると:
QTest::keyPress(pWin, Qt::Key_Enter, 1000);
何も起こらない...何が起こっていると思いますか?ボタンに setFocus() を試しましたが、何も起こりません...