Domanda

Di seguito è un blocco di codice per la simulazione di tasti premuti su un menu. Posso navigare in profondità nei menu della mia applicazione, ma quando torno alla maschera principale, sto ottenendo un errore di segmetation ....: (

primo mostro il mio Applicazione:

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

Poi simulare pressione di un tasto per visualizzare il menu principale:

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

Poi simulare un'altra keyPress di tornare al mio principale dell'applicazione:

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

Questo è dove sto ottenendo l'errore di segmentazione ... Qualcuno può dirmi che cosa sta causando questo errore?

È stato utile?

Soluzione

Inizia con controllo il risultato della QApplication::activeWindow(). Dalla documentazione ..

  

Restituisce il top a livello di applicazione   finestra che ha l'input dalla tastiera   messa a fuoco, o 0 se nessuna finestra dell'applicazione   ha la messa a fuoco. Ci potrebbe essere un   ActiveWindow (), anche se non v'è   focusWidget (), per esempio se nessun   penseremo in quella finestra accetta chiave   eventi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top