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.



  • Olá Arnaut, obrigado pela sua resposta, era o que eu necessitava ^^. Obrigado pela sua bela explicação, estava acontecendo o que eu estava a suspeitar mesmo.

    Abraços.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.