Найти в Дзене
Old Programmer

Программирование оконных приложений на языке C++ (библиотека Qt). Модальные и немодальные окна

Доброго здоровья в новом 2021 году, это мой канал Old Programmer о программировании и программистах. Здесь: Тематическое оглавление моего Zen-канала (Old Programmer). А здесь все мои материалы о QT. А тут материалы по языкам C/C++. Где-то в комментариях мне написали замечание, что вот де я в примерах по Qt пытаюсь наследовать все что нужно и все, что не нужно. И, кажется, даже не один раз меня в этом упрекнули. На что я справедливо отвечал, что мне так просто нравится и вообще это удобно, хотя и несколько увеличивает объем программы. А сегодня решил: а чего наследовать то? Не наследованием единым, так сказать, жив программист. И написал оконное приложение без наследований. А тема важная сегодня: модальные и немодальные окна. Два вида окон - модальные и немодальные В оконных программах есть два вида окон (ну, кроме главного): Понятно, что модальное окно для программиста удобнее. Не нужно контролировать, что происходит с другими окнами. Сделал свое дело в окне и закрыл его. А в случае
Оглавление

Доброго здоровья в новом 2021 году, это мой канал Old Programmer о программировании и программистах. Здесь: Тематическое оглавление моего Zen-канала (Old Programmer). А здесь все мои материалы о QT. А тут материалы по языкам C/C++.

Где-то в комментариях мне написали замечание, что вот де я в примерах по Qt пытаюсь наследовать все что нужно и все, что не нужно. И, кажется, даже не один раз меня в этом упрекнули. На что я справедливо отвечал, что мне так просто нравится и вообще это удобно, хотя и несколько увеличивает объем программы. А сегодня решил: а чего наследовать то? Не наследованием единым, так сказать, жив программист. И написал оконное приложение без наследований. А тема важная сегодня: модальные и немодальные окна.

Два вида окон - модальные и немодальные

В оконных программах есть два вида окон (ну, кроме главного):

  • Модальные окна. Эти окна блокируют активизацию всех других окон приложения.
  • Немодальные окна. Эти окна не блокируют другие окна и запуск других окон.

Понятно, что модальное окно для программиста удобнее. Не нужно контролировать, что происходит с другими окнами. Сделал свое дело в окне и закрыл его. А в случае с немодальным окном следует всегда думать, что будет, если параллельно будете что-то делать в других окнах. Да и само немодальное окно можно открыть несколько раз. Конечно, на программиста это дополнительная нагрузка, но зато можно сделать красивый гибкий интерфейс.

Пример программы с модальным и немодальным окнами

В программе qtmnm4000.cpp создается одно главное окно, в котором две кнопки: для создания модального окна и создания немодального окна. Немодальных окон, разумеется, можно создать произвольное количество. Ну и начинающим программировать на QT, обратим также внимание, на любимую многими функцию connect. Она запускается как метод QObject, поскольку унаследованных классов в моем приложении нет. По умолчанию окно создается немодальным, так что для того, чтобы сделать его модальным используем метод setWindowModality().

Результат работы программы можно увидеть на рисунке 1.

Рисунок 1. Главное, модальное и немодальные окна на фоне рабочего стола
Рисунок 1. Главное, модальное и немодальные окна на фоне рабочего стола

Подписывайтесь на мой канал Old Programmer и не забывайте программировать, это окрыляет. И ставьте 'лайк'.

Фрагмент программы qtmnm4000.cpp
Фрагмент программы qtmnm4000.cpp