Модальный диалог Qt и основной процесс

#qt #modal-dialog

#qt #модальный диалог

Вопрос:

У меня есть программа, которая выполняет некоторый процесс в главном окне, и мне нужно модальное диалоговое окно с некоторыми пользовательскими элементами, которые будут отображаться над ним, чтобы показать прогресс. Он также должен блокировать взаимодействие пользователя с главным окном. Основной процесс должен выполняться, пока отображается диалоговое окно. Какой способ лучше (в qt) для этой цели?

Комментарии:

1. Лучше, чем что, стандартный способ? Вы уже искали альтернативы?

2. Лучше — это просто другое слово для «лучшего» или «стандартного». Пожалуйста, имейте некоторую терпимость к не носителям английского языка. Мы стараемся изо всех сил. Спасибо.

Ответ №1:

На самом деле, это звучит довольно просто (если я не неправильно понял ваш вопрос).

 QDialog my_progress_dialog( this );
my_progress_dialog.setModal( true );
my_progress_dialog.show();
  

Вызов show() not exec() оставит вас в основном цикле событий. В то же время, установка модального диалога блокирует весь пользовательский ввод в главное окно. Работа выполнена.

Вы смотрели QProgressDialog ? Он существует именно для этой цели.

Комментарии:

1. Даже не связано с тем, что мне было нужно, но вы ответили на два вопроса для меня, Робин!!! БОЖЕ! Я не знал, что есть разница между show() и exec() до ЭТОГО!