QT: Unit-Testing Segmentation Fault
-
27-09-2019 - |
Frage
Im Folgenden ist ein Codeblock für eine Menütaste drückt simulieren. Ich kann tief in das Menü meiner Anwendung navigieren, aber wenn ich auf die Hauptform zurück, ich bin einen segmetation Fehler bekommen ....: (
zuerst zeige ich meine Anwendung:
std::auto_ptr<MyForm> mainForm( new MyForm( 3, 3 ));
mainForm->show();
simulieren dann ein keyPress das Hauptmenü zeigen:
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"));
simuliert dann eine andere keyPress meiner Hauptanwendung zurück zu gehen:
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"));
Dies ist, wo ich die Segmentation fault immer ... Kann jemand mir sagen, was diesen Fehler verursacht?
Lösung
Starten Sie mit dem Ergebnis der QApplication::activeWindow()
überprüfen. Aus der Dokumentation ..
Gibt die Anwendung der obersten Ebene Fenster, das die Tastatureingabe hat Fokus, oder 0, wenn kein Anwendungsfenster hat den Fokus. Es könnte eine sein Active (), selbst wenn keine da ist focusWidget (), zum Beispiel, wenn kein Widget in dem Fenster Schlüssel akzeptiert Veranstaltungen.