Fechando nova janela nonchild em Qt
Pergunta
eu estou tentando fazer 2 janelas. 2º deve ser chamado em 1º. Eu não conectá-los Child> pai. Mas quando eu liguei segunda janela e fechou-a 1ª janela também fechado. O que devo fazer? Ambas as janelas são inhereted de QWidget. C ++ e Qt
Desculpem a minha pobre descrever. Eu tenho uma janela principal. Classe herdada de QMainWindow. Que eu criei 2ª janela. Classe herdado de QWidget. Em primeiro (janela principal) eu estou criando e chamando segunda janela
ConfigWindow *ConfWindow = new ConfigWindow();
ConfWindow->show();
Sem dar link para pai. Tudo funciona bem, mas quando eu fecho segunda janela (config-janela) minha janela principal está fechando também. Eu não precisa neste. O que devo fazer para bloquear fechar a janela principal após o fechamento janela de configuração.
Hope descrever um pouco melhor.
A minha primeira janela tem este bandeiras:
this->setWindowFlags(Qt::Tool | Qt::FramelessWindowHint);
Sem eles está tudo bem. eu pudesse mudar alguma coisa, se eu preciso que as bandeiras em minha janela?
Solução
Você precisa de algo como:
QApplication app(argc, argv);
app.setQuitOnLastWindowClosed(false);
Aqui está o programa de teste:. http://pastebin.com/f5903c5f4
Cuidado, agora você precisa explicitamente quit () no destruidor de sua janela principal.
Se você ler QApplication :: quitOnLastWindowClosed documentação , você vai encontrar que:
Se esta propriedade é verdadeiro, os quites aplicações quando o último visível janela principal (ou seja, a janela sem pai) com o conjunto de atributos Qt :: WA_QuitOnClose está fechado. Por padrão, esse atributo é definido para todos os widgets com exceção de sub-janelas
Por causa de sua janela principal é uma janela (sem moldura) ferramenta, ela não conta. Isso deixa ConfWindow como o widget apenas para não sub-janelas de nível superior. Assim, se você fechar ConfWindow, provoca a instância do aplicativo para sair.
Outras dicas
Se este é o código, em seguida, há uma enorme bug em Qt.
O código acima deve nunca fecham o seu primeiro do Windows, deve haver algo errado.
É a aplicação fechado ou ele falhar?
Nota ??strong>
Quem está excluindo configWindow? Há um atributo Qt::WA_DeleteOnClose
que exclui a janela após ele é fechado.
ConfigWindow *confWindow = new configWindow();
configWindow->setAttribute(Qt::WA_DeleteOnClose, true);
confWindow->show();