以下是用于模拟菜单上按键的代码块。我可以深入浏览我的应用程序的菜单,但当我回到主窗体时,我得到了一个分段错误.... :(
首先我展示我的应用程序:
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"));
然后模拟另一个keyPress返回我的主应用程序:
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"));
这是我遇到分段错误的地方......有人能告诉我导致这个错误的原因是什么吗?
答案 0 :(得分:1)
首先检查QApplication::activeWindow()
的结果。来自文档..
返回应用程序顶级 具有键盘输入的窗口 焦点,如果没有应用程序窗口则为0 有重点。可能有一个 activeWindow()即使没有 focusWidget(),例如,如果没有 该窗口中的小部件接受密钥 事件