Вопрос

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

Сначала я покажу мое приложение:

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 (), даже если нет фокусирования (), например, если виджет в этом окне не принимает ключевые события.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top