Zablokowanie okna, gdy inne jest na wierzchu



  • Witam!
    Szukałem na wszystkie możliwe sposoby, ale nie znalazłem rozwiązania. Otóż załóżmy, że mam dwa okna. Po naciśnięciu przycisku w oknie A, pojawia się okno B. Metoda setParent() mnie nie zadowala, bo wówczas okno B staje się nieodrębną częścią okna A. Chcę jedynie, by okno A zostało zablokowane, dopóki użytkownik nie wyłączy okna B, a mówiąc "zablokowane", mam na myśli to, że nie będzie mógł wykonać na nim żadnej akcji (także go przesunąć ani zamknąć), coś takiego ma miejsce, gdy pojawia się MessageBox. Żeby jeszcze bardziej rozjaśnić, w C++ Builder można było to osiągnąć poprzez np. instrukcję MainWindow->Enabled = false - wówczas okno było widoczne, ale użytkownik nie mógł absolutnie nic z nim zrobić. Z góry dziękuję za odpowiedź!


  • Moderators

    W Qt mówi się o modalności okien. Sprawdź klasę QDialog, lub popatrz na właściwość modal w "QWidget":http://qt-project.org/doc/qt-5.0/qtwidgets/qwidget.html#modal-prop.



  • Dzięki za odpowiedź, dokładnie o to chodziło!
    W razie, gdyby ktoś miał podobny problem, rozwiązaniem jest zastosowanie metody setWindowModality() z parametrem Qt::ApplicationModal.



  • Ewentualnie jak komuś się w kodzie nie chce klepać to bezpośrednio można w designerze ustawić modalność danego okna.


Log in to reply
 

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