Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

Запрет переключения между формами в MDI



  • Добрый день.
    Вопрос: Есть форма MDI, на ней создана форма А, из неё вызывается новая форма Б. Мне нужно запретить обратное переключение на форму А, пока форма Б каким либо образом не будет закрыта. Дальше ещё 2 варианта, либо запретить переключение только на форму, а второй момент, запретить переключение на любую форму которые уже есть в MDI (там может быть ещё же 10 форм открыто). Как пример - открывает текстовый файл ворд, делаем изменения нажимаем SaveAs, и из этой формы мы не можем попасть на предыдущую, пока не закроем текущую.

    Заранее благодарен.



  • @Bjoern111 said in Запрет переключения между формами в MDI:

    вызывается новая форма Б

    А что делает эта форма Б, что она должна запретить закрываться форме А?



  • Должен действовать запрет именно на переключение на форму А, пока не закроется текущая форма Б. (пример с вордом...)



  • @Bjoern111 said in Запрет переключения между формами в MDI:

    Должен действовать запрет именно на переключение на форму А, пока не закроется текущая форма Б. (пример с вордом...)

    Я это понял и по этому спросил, что должна делать форма Б?
    Если нужно сделать так, чтобы впереди было какое-то окно, которое не давало бы доступа к форме А, то можно вызвать QMessageBox и всё



  • Не просто какая то форма типа QMessageBox, у меня осмысленная форма Б, я говорил про пример с Вордом - откройте новый файл, сделайте изменения, и попробуйте сохранить, при выборе папки сохранения, переместитесь на поле ввода в основном текстовом файле - этого сделать невозможно. То есть форма Б это осмысленная форма, а не MessageBox.

    Опять же, я говорил про 2 варианта - 1) форма Б остается активной, нет доступа к форме А, до закрытия формы Б, причем на другие формы возможность переключаться есть. и 2) форма Б блокирует доступ вообще ко всем формам, пока форма Б не будет закрыта.



  • @Bjoern111 said in Запрет переключения между формами в MDI:

    Опять же, я говорил про 2 варианта - 1) форма Б остается активной, нет доступа к форме А, до закрытия формы Б, причем на другие формы возможность переключаться есть. и 2) форма Б блокирует доступ вообще ко всем формам, пока форма Б не будет закрыта.

    Ну тогда открывайте диалоговое окно



  • Мне не нужно диалоговое окно, я привел это как пример. Мне нужно чтобы форма Б не давала возможность доступа к форме А.



  • @Bjoern111 said in Запрет переключения между формами в MDI:

    Мне не нужно диалоговое окно, я привел это как пример. Мне нужно чтобы форма Б не давала возможность доступа к форме А.

    Ну я так понимаю, что и PopUp окно предлагать бесполезно?



  • @razorqhex said in Запрет переключения между формами в MDI:

    PopUp

    Все верно =) Есть ещё какие варианты?



  • @razorqhex
    Извиняюсь, проблема возникла следущая, если создать форму на основе QDialog - получается, но только вне MDI, а хотелось бы внутри, возможно ли такое сделать?



  • @Bjoern111 said in Запрет переключения между формами в MDI:

    хотелось бы внутри

    Стоп. А если использовать модальное окно? Это же ведь оно. На википедии по MDI как раз указывается модальное окно.

    • Модальное окно в графическом интерфейсе пользователя — окно, которое блокирует работу пользователя с родительским приложением до тех пор, пока пользователь это окно не закроет.

    UPD: прошу прощения. QDialog и есть модальное окно. Если я правильно понял, то нужно включить режим модальности:

    QDialog::setModal()
    

    true — модальный режим
    false — немодальный

    Может эта статья поможет?


Log in to reply