Qt blokowanie okna przy wyświetlaniu nowego

0

Witam,

Problem polega na tym że po naciśnięciu przycisku w oknie nr1 ma pojawia się okno nr2 - fajnie. W tym momencie chciał bym żeby okno nr1 zostało kompletnie zablokowane. Obecnie używam do tego setDisabled(true). Jednak ta metoda tylko blokuje zawartość okna, wciąż mogę je zamknąć, zminimalizować. Jak zablokować kompletnie okno nr 1 gdy zostanie otwarte okno nr2.?
Gdy okno nr 2 zostaje zamknięte chciał bym odblokować okno nr 1 i tu jest pies pogrzebany. Jak odblokować okno nr 1 po zamknięciu okna nr2?

Od razu zaznaczam że jestem początkujący.

z góry dzięki za pomoc.

2

Ustaw je na modalne: https://doc.qt.io/qt-5/qwidget.html#windowModality-prop (w QDialog jest do tego funkcja setModal())

w->setWindowModality(Qt::WindowModal);
// lub
w->setWindowModality(Qt::ApplicationModal);

https://doc.qt.io/qt-5/qt.html#WindowModality-enum

0

Dziękuję, jeden problem rozwiązany.
to mój kod:

{
    app = new second(this);
     app->show();
     this->setDisabled(true);
     this->setWindowModality(Qt::WindowModal);
}

teraz chciał bym żeby po zamknięciu app setDisable zmieniło się na false i setWindowModality(Qt::NonModal).
Gdzie to wstawić?

Dzięki.

2

W destruktorze nowego okna, albo podłącz się do jego sygnału destroyed() (jeśli wielokrotnie wykorzytujesz tę samą klasę)

0

Poddaję się, poniżej jest destruktor. KO czy mógł byś dodać to co trzeba.

{
    delete ui;
}

Przypuszczam że kłaniają sie braki w OOP.
Dzięki

0

Był bym bardzo wdzięczny gdy bym mógł zobaczyć przykład z destroyed()

Dziękuję.

0

https://github.com/KrzaQ/4p-1667872
Masz gotowy przykład. Okazuje się, że destroyed() nie bardzo się do tego nadaje.

1

Najprościej jest utworzyć drugie okno bazujące na QDialog i w zdarzeniu kliknięcia na przycisk utworzyć je tak:

    second win(this);
    win.exec();

Z pierwszym oknem kompletnie nic nie trzeba robić.

1 użytkowników online, w tym zalogowanych: 0, gości: 1