Qdialog aparecendo outro qdialog
-
21-09-2019 - |
Pergunta
Eu tenho um qdialog subclassificado contendo um monte de qspinbox de subclassem. Ao clicar em um spinbox, um teclado (outro qdialog), onde você pode usar o PushButtons para inserir dígitos. Ambos os qdialog são ativados ligando para Qdialog :: EXEC ();
No entanto, ao abrir este 2º Qdialog, o primeiro fecha. Eu pisei e notei que o 1º QDialog ainda não termina. QDialog 1 envia "QDIALOG :: rejeitado" depois que eu terminar o QDialog 2. O que eu gostaria é o QDialog 1 para não terminar, ele precisa atualizar a caixa de spin com o valor inserido e abrir mais qdialog's para outros spinbox O usuário deseja editar mais tarde.
Eu acho que tem a ver com o Eventloop do Qdialog 1 sendo morto pelo Eventloop do Qdialog 2. Eu tentei usar QDialog :: Show no Qdialog 2. O widget aparece por um momento (milissegundo), mas não permanece ativo. O QDialog 1 também é imediatamente fechado.
Solução
O QDIALOG 1 está definido como QT :: POPUP, QDIALOG 2 foi definido como QT :: Caixa de diálogo por padrão. Um pop -up fecha em uma ampla gama de eventos. Eu também defini a bandeira do Qdialog 2 para Qt :: Pop -up, o que parece mais fechar o QDialog 1.
Outras dicas
A maneira como você descreveu verbalmente o código, não deve ver o problema que descreve. Sem ver seu código real, não pude arriscar um palpite sobre o que está causando o problema. No entanto, posso dizer com certeza que corri exec()
na caixa de diálogo A, depois dentro daquela corrida exec()
na caixa de diálogo B (de um botão) e tinha uma caixa de diálogo disponível quando a caixa de diálogo B sair.