c++ - QTest - 无法将 Qt::Enter 传递给 QPushButton

标签 c++ unit-testing qt qtestlib

我正在使用 QTest 库创建一个自动化测试应用程序。我能够模拟应用程序上的按键,除非它到达具有 QDialogBu​​ttonBox(保存和取消)的窗口。 这是我的示例代码:

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() 但也没有任何反应......

最佳答案

在 QDialogBu​​ttonBox 中你可能会得到需要的按钮

 QPushButton * QDialogButtonBox::button ( StandardButton which )

然后调用它的 SetFocus 方法。 如果你不能直接访问 QDialogBu​​ttonBox,你可以用

QList<T> QObject::findChildren ( const QString & name = QString() )

甚至用这种方法自己获取按钮...

关于c++ - QTest - 无法将 Qt::Enter 传递给 QPushButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4791788/

相关文章:

python - 如何将测试名称和模块添加到结果中的测试文档字符串?

c++ - 在所有情况下将 keyPressEvent 传播到顶层 QWidget

python - 是否可以让 QWebKit 显示 pdf 文件?

c++ - 分析变量赋值的 bool 结果有意义吗?

c++ - 为什么我无法正确转换为 8UC3?

c# - 模拟 System.Drawing.Image 与最小起订量

c++ - Qt布局不工作

c++ - CUDA cudaMalloc

c++ - 忽略 if 语句的代码 - C++

java - 返回 NullPointerException 的模拟方法