1

下面是用于模拟菜单上的按键的代码块。我可以深入了解我的应用程序的菜单,但是当我返回主窗体时,我遇到了一个分段错误.... :(

首先我展示我的应用程序:

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"));

然后模拟另一个 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"));

这就是我遇到分段错误的地方......谁能告诉我是什么导致了这个错误?

4

1 回答 1

1

从检查结果开始QApplication::activeWindow()。从文档..

返回具有键盘输入焦点的应用程序顶级窗口,如果没有应用程序窗口具有焦点,则返回 0。即使没有 focusWidget(),也可能存在 activeWindow(),例如,如果该窗口中没有小部件接受键事件。

于 2010-11-22T14:00:52.897 回答