【发布时间】:2011-01-25 09:31:33
【问题描述】:
我正在使用 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() 到按钮,但也没有任何反应......
【问题讨论】:
标签: c++ unit-testing qt qtestlib