Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: mindz_eye от Декабрь 19, 2006, 18:22



Название: Вопрос по QAction
Отправлено: mindz_eye от Декабрь 19, 2006, 18:22
Как сделать, чтобы для checkable QAction флаг checked выставлялся через некоторое время после клика по нему?
Иными словами, чтобы в меню нужное действие становилось выбранным только после соответствующего подтверждения сервера.
Пробывал выставлять eventFilter - не помогло =(


Название: Вопрос по QAction
Отправлено: Dendy от Декабрь 19, 2006, 18:39
Ставишь setChekable( false ) и ловишь QAction::triggered(). После ответа сервера ставишь руками setChecked().


Название: Вопрос по QAction
Отправлено: mindz_eye от Декабрь 19, 2006, 18:44
setCheckable( false ) убирает галочки выбранных действий в меню.
Нужно чтобы до ответа сервера предыдущие действие оставалось checked.


Название: Вопрос по QAction
Отправлено: Dendy от Декабрь 19, 2006, 19:03
А если ловить в QAction::toggled( bool ), отсьІлать запрос и ставить значение обратно?


Название: Вопрос по QAction
Отправлено: mindz_eye от Декабрь 20, 2006, 20:25
Можно, но предыдущее значение почему-то не восстанавливается. В слоте triggered делаю
    blockSignals( true );
    toggle();
    blockSignals( false );

После этого все действия оказываются чистыми.


Название: Вопрос по QAction
Отправлено: bigirbis от Декабрь 20, 2006, 21:18
Думаю, по triggered() надо поток стартовать, отсылать запрос на сервер и в нем же ожидать ответа от сервера.