Classes
-
Bom pessoal, a dúvida é a seguinte, eu tenho 2 classes, sendo ela Form e MainWindow.
Eu inicializo a Form no main para exibir a janela
@Form start;
start.show();@E em um certo evento nesta classe Form(PushButton), eu quero inicializar a outra classe, MainWindow e fechar a Form:
@
MainWindow window;
window.show();
@Porém a GUI da classe MainWindow simplesmente aparece e some do nada, e não consigo fechar a GUI Form desta forma
@Form.close();@Já que ela se encontra em outro arquivo e em outra classe(main.cpp).
Como eu poderia fazer isto? Desejo fechar a "janela" Form ao clicar no botão e exibir a janela MainWindow.
É uma dúvida até meio besta, mas tem me deixado de cabeça quente de tanto pensar rs.
-
Olá,
@MainWindow window;
window.show();@window é uma variável local da função que contém esse fragmento de código. Assim que a função termina ela é destruida, por isso a janela aparece e desaparence imediatamente em seguida.
Mude para
@MainWindow* window = new MainWindow();
window->show();@note que objetos criados com o operador new precisam ser destruidos com o operador delete para liberar a memória alocada para eles.
Quanto a sua segunda questão, você precisa passar um ponteiro ou referência do objeto start para o objeto window ou não tem como o segundo objeto saber da existência do primeiro.
Mas nesse caso específico por que você não fecha o primeiro widget na mesma função que você está usando para criar e mostrar o segundo?
Sucesso com seu projeto,
H.