以下是在菜单上模拟按键的代码块。我能深深导航到我的应用程序的菜单,但是当我回到主窗体,我得到一个错误segmetation ....:(

第一我显示我的应用:

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

然后模拟一个按键,以显示主菜单:

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()的结果。从文档..

  

返回应用程序顶层   拥有键盘输入窗口   焦点,或0,如果没有应用程序窗口   具有焦点。有可能是一个   则activeWindow(),即使没有   focusWidget(),例如,如果没有   窗口小部件在窗口受理的关键   事件

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top