Question

Ci-dessous un bloc de code pour simuler touches dans un menu. Je peux naviguer en profondeur dans les menus de ma candidature, mais quand je reviens à la forme principale, je reçois une erreur de segmetation ....: (

d'abord je montre ma demande:

std::auto_ptr<MyForm> mainForm( new MyForm( 3, 3 ));
mainForm->show();

simulent ensuite un keyPress pour afficher le menu principal:

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

Alors simuler un autre keyPress pour revenir à ma demande principale:

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

C'est là que je suis en train de la faute de segmentation ... Quelqu'un peut-il me dire ce qui cause cette erreur?

Était-ce utile?

La solution

Commencez par vérifier le résultat de QApplication::activeWindow(). A partir de la documentation ..

  

Retourne le haut niveau de l'application   fenêtre qui a l'entrée du clavier   mise au point, ou 0 si aucune fenêtre d'application   a la mise au point. Il pourrait y avoir un   ActiveWindow (), même s'il n'y a pas   focusWidget (), par exemple si aucune   widget dans cette fenêtre accepte la clé   événements.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top