QT: ошибка сегментации модульного тестирования - PullRequest
1 голос
/ 22 ноября 2010

Ниже приведен блок кода для имитации нажатий клавиш в меню. Я могу углубиться в меню своего приложения, но когда я возвращаюсь к основной форме, я получаю ошибку сегментации ....: (*

сначала я показываю свою заявку:

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 Ответ

1 голос
/ 22 ноября 2010

Начните с проверки результата QApplication::activeWindow(). Из документов ..

Возвращает верхний уровень приложения окно с клавиатурным вводом Фокус или 0, если нет окна приложения имеет фокус. Там может быть activeWindow (), даже если нет focusWidget (), например, если нет Виджет в этом окне принимает ключ события.

...