2010-11-22 68 views
1

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

我首先表明我的应用:

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

这是我得到分段错误的地方......有人能告诉我是什么原因导致了这个错误?

回答

1

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

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