【问题标题】:QT: unit-testing segmentation faultQT:单元测试分段错误
【发布时间】:2023-03-11 19:43:01
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: unit-testing qt user-interface segmentation-fault qtestlib


    【解决方案1】:

    首先检查QApplication::activeWindow() 的结果。来自文档..

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

    【讨论】:

      猜你喜欢
      • 2011-05-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      相关资源
      最近更新 更多