Pregunta

A continuación se muestra un bloque de código para simular pulsaciones de teclas en un menú. Puedo navegar profundamente en los menús de mi solicitud, pero cuando vuelva a la forma principal, estoy recibiendo un error de segmetation ....: (

primera muestro mi aplicación:

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

A continuación, simular una pulsación de tecla para mostrar el menú 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"));

A continuación, simular otra keyPress a volver a mi aplicación principal:

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

Aquí es donde yo estoy recibiendo el error de segmentación ... ¿Alguien puede decirme lo que está causando este error?

¿Fue útil?

Solución

Comenzar con el resultado de la comprobación QApplication::activeWindow(). A partir de los documentos ..

  

Devuelve el alto nivel de aplicación   ventana que tiene la entrada de teclado   enfoque, o 0 si no hay ventana de la aplicación   tiene el foco. Es posible que haya una   ActiveWindow (), incluso si no hay   focusWidget (), por ejemplo si no hay   Widget en esa ventana acepta clave   eventos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top