Название: Как отловить момент старта exec() в QDialog? Отправлено: xintrea от Апрель 10, 2016, 16:25 Сделал диалог, унаследованный от QDialog.
Диалог показывает большой набор иконок (несколько разделов по ~1500 иконок). Иконки из одного раздела надо считать с диска, и это занимает около 5 секунд. Поэтому в диалоге предусмотрена процентная линейка, которая показывает процесс загрузки иконок в разделе. И она работает, когда пользователь выбирает тот или иной раздел иконок. Но возникает проблема с первой отрисовкой диалога. В момент, когда диалог появляется на экране, необходимо загрузить иконки из первого раздела. И я не пойму, как отловить момент запуска диалога через exec(), чтобы запустить загрузку иконок из первого раздела. Вопрос: Как отловить момент старта exec() в QDialog? PS: Если запускать загрузку иконок (например сделать метод preloadIcon()) до выполнения exec(), то все работает. За исключением того, что весь интерфейс замирает на 5 секунд, и непонятно что происходит. И даже если если перед preloadIcon() запустить show(), то тоже непонятно что происходит, ибо виджеты окна диалога не отрисовываются, видна только рамка. Это происходит из-за того, что основной цикл диалога не запущен, а запускается он все тем же exec(). И даже если при обновлении процентной линейки вызывать метод диалога update(), то тоже ничего не отрисовывается. Видимо, тоже потому что еще не запущен основной цикл. PS2: Переопределение exec() тоже не помогает. Если сделать так: Код: int myDialog::exec() А если сделать так: Код: int myDialog::exec() Название: Re: Как отловить момент старта exec() в QDialog? Отправлено: Old от Апрель 10, 2016, 16:31 Код
или можно немного подождать, пока отрисуется диалог: Код
Название: Re: Как отловить момент старта exec() в QDialog? Отправлено: kambala от Апрель 10, 2016, 17:05 showEvent() еще попробуй
Название: Re: Как отловить момент старта exec() в QDialog? Отправлено: __Heaven__ от Апрель 11, 2016, 11:19 А разве не в поток надо задать загрузку иконок?
|