Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: ecspertiza от Сентябрь 09, 2009, 11:26



Название: Блокировка Gui
Отправлено: ecspertiza от Сентябрь 09, 2009, 11:26
Вопрос такой как на время выполнения процедуры заблокировать GUI.

Пробовал с помощью QDialog то есть в начале процедуры выводил диалог с помощью exec() но стало быть выполнение программного кода тоже останавливается.

Пробую пока создавать отдельный поток но что то всё плохо ибо он должен очень тесно общаться с главным потоком, может подскажете чего.


Название: Re: Блокировка Gui
Отправлено: BaltikS от Сентябрь 09, 2009, 11:36
qApp->processEvents(QEventLoop::ExcludeUserInputEvents); ???


Название: Re: Блокировка Gui
Отправлено: ecspertiza от Сентябрь 09, 2009, 11:49
помогло и просто

qApp->processEvents();

спасибо, я долго мучился :)


Название: Re: Блокировка Gui
Отправлено: zenden от Сентябрь 09, 2009, 12:19
Странно, обычно спрашивают как РАЗблокировать GUI во время выполнения процесса.
и ответом на этот вопрос как раз-таки бывает processEvents()

а насчет QDialog - setModal() и show() вам в помощь


Название: Re: Блокировка Gui
Отправлено: ecspertiza от Сентябрь 09, 2009, 13:56
Ну на самом деле там идёт довольно большая перерисовка, и пользователю нужно сказать мол подожди не кликай всё подряд.

Вот и тут меня спас QDialog и всё токи qApp->processEvents(QEventLoop::ExcludeUserInputEvents);


Название: Re: Блокировка Gui
Отправлено: lit-uriy от Сентябрь 09, 2009, 14:25
>>довольно большая перерисовка, и пользователю нужно сказать мол подожди не кликай всё подряд.
Может тогда лучше сразу пачку всего перерисовывать.
setUpdatesEnable для главного виджета?


Название: Re: Блокировка Gui
Отправлено: spectre71 от Сентябрь 10, 2009, 07:37
Вопрос такой как на время выполнения процедуры заблокировать GUI.

Пробовал с помощью QDialog то есть в начале процедуры выводил диалог с помощью exec() но стало быть выполнение программного кода тоже останавливается.
...

Код
C++ (Qt)
MyDialog->setModal(true);
...
...
MyDialog->show();