Pergunta

Abaixo está um bloco de código para simular pressionamentos de teclas em um menu. Eu posso navegar profundamente nos menus da minha aplicação, mas quando volto para a forma principal, estou recebendo um erro de segmetação .... :(

Primeiro eu mostro meu aplicativo:

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

Em seguida, simule um KeyPress para mostrar o 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"));

Em seguida, simule outra KeyPress para voltar ao meu aplicativo 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"));

É aqui que estou recebendo a falha de segmentação ... Alguém pode me dizer o que está causando esse erro?

Foi útil?

Solução

Comece com a verificação do resultado de QApplication::activeWindow(). Dos documentos ..

Retorna a janela de nível superior do aplicativo que possui o foco de entrada do teclado ou 0 se nenhuma janela do aplicativo tiver o foco. Pode haver um ActiveWindow (), mesmo que não haja focowidget (), por exemplo, se nenhum widget nessa janela aceitar eventos principais.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top