|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.10.2015, 15:40 | #1 |
Форумчанин
Регистрация: 07.08.2011
Сообщений: 576
|
Тяжелая функция Qt
Qt
В программе ест функция в которой происходят длитильные вычисления, до десятков секунд. Естественно GUI, при этом не отвечает. Так вот, надо, что бы при вызове этой функции открывалось окно с надписью "подождите" или что то вроде. Что бы пользователь не думал что программа зависла. GUI при этом работать не должен. Мне в голову приходит только одно- Создать модальное диалоговое окно. В этом классе вызвать функцию, в отдельном потоке. После завершения работы функции, закрыть диалог, а результат передать классу родительского окна. Может это кривое решение? и есть более изящные способы решения проблемы? Последний раз редактировалось SAMOUCHKA; 02.10.2015 в 15:18. |
01.10.2015, 16:12 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,792
|
Цитата:
Я бы наверное извратнулся: Сделал бы некую панель, на которую поместил бы картинку. Панель скрыл. Когда пришло бы время запускать тяжелый процесс панель бы активировал и поставил поверх всех компонентов формы.
I'm learning to live...
|
|
02.10.2015, 00:17 | #3 |
Форумчанин
Регистрация: 13.08.2011
Сообщений: 184
|
Зачем модальный диалог?
|
02.10.2015, 00:21 | #4 |
Форумчанин
Регистрация: 30.06.2015
Сообщений: 353
|
У меня невидимый статик на верхнем Z в размер окна с надписью мол ждите. Перед длительными операциями операциями делаю видимым, после скрываю.
|
02.10.2015, 00:25 | #5 |
Форумчанин
Регистрация: 13.08.2011
Сообщений: 184
|
Прогресс бар и/или окно лога не в моде?
|
02.10.2015, 01:08 | #6 |
Форумчанин
Регистрация: 30.06.2015
Сообщений: 353
|
Ну смотря что делается. У меня был объёмный поиск, без возможности как-либо предсказать требуемое время...
|
02.10.2015, 15:21 | #7 |
Форумчанин
Регистрация: 07.08.2011
Сообщений: 576
|
Чтоб основное окно было не активным и пользователь не лез туда своими пальцами. Нужно ждать пока закончится эта тяжелая задача.
|
02.10.2015, 16:27 | #8 |
Форумчанин
Регистрация: 13.08.2011
Сообщений: 184
|
<<Ну смотря что делается. У меня был объёмный поиск, без возможности как-либо предсказать требуемое время... >>
Ну так лог-окно TextEdit? А у прогресса есть "особый" режим для этого, когда полоса постоянно бегает "особым" образом, не помню как это называется. <<Чтоб основное окно было не активным и пользователь не лез туда своими пальцами.>> Почему нет? Зачем блокировать все функции программы, когда можно заблочить только кнопку "старт" и не плодить окна, тем более модальные? Последний раз редактировалось Avazart; 02.10.2015 в 16:30. |
02.10.2015, 20:45 | #9 | |
Форумчанин
Регистрация: 07.08.2011
Сообщений: 576
|
Цитата:
|
|
02.10.2015, 21:16 | #10 |
Старожил
Регистрация: 17.11.2010
Сообщений: 19,042
|
Совсем блочить окно длительным процессом плохо. Оно хотя бы должно иметь возможность прорисовываться
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
вроде не тяжелая, но не выходит | Дашуля_18 | Помощь студентам | 2 | 25.03.2012 16:07 |
тяжелая, но интересная задача: Дано 3 числа. Между ними можно ставить знаки операций: сложения, вычитания, умножения, деления | ВДПУ | Помощь студентам | 2 | 25.02.2012 19:59 |
Правда ли что Java "Тяжелая" и все "вешает" ? | webmaster-n | Общие вопросы по Java, Java SE, Kotlin | 10 | 30.07.2009 01:22 |
Тяжелая задачка | Sweeney | Паскаль, Turbo Pascal, PascalABC.NET | 9 | 16.12.2008 19:25 |
одна функция потока, а другая функция - член класса запускающего этот поток | Дмитрий_Ч | Общие вопросы C/C++ | 2 | 27.09.2007 08:50 |