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?

Foi útil?

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
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();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top