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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top