QT: fallo de segmentación-prueba de la unidad
-
27-09-2019 - |
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?
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.