Управление активностью актионов (QAction) |
Здравствуйте, гость ( Вход | Регистрация )
Управление активностью актионов (QAction) |
fsMark |
16.7.2009, 12:29
Сообщение
#1
|
Студент Группа: Участник Сообщений: 97 Регистрация: 23.4.2008 Из: г. Киров Пользователь №: 155 Спасибо сказали: 10 раз(а) Репутация: 1 |
Есть пара тулбаров и меню на них лежат актоны, в зависимости от состояни приложения некоторые из них активны некоторые нет.. хотелось бы как то централизованно этим управлять. Я написал метод который устанавливает активность всех актионов, возникает вопрос когда мне его вызывать, очевидно что при создании окна и после выполнения какого либо из актионов (приложение само не меняет свое состояние). Собственно вопрос: какие есть предложения по аккуратной реализации этого безобразия, навскидку придумал только обойти рекурсивно всех детей окна имеющих тип QAction и соединить их выполнение с функцией управляющей активностью, но ведь нет гарантии порядка обработки слотов (то есть сначала обновлю состояние актонов а потом измениться состояние приложения). Идеи, предложения,.. у меня странное ощущения что я это както через одно место делаю.. наставьте на путь истинный.
|
|
|
kwisp |
16.7.2009, 12:44
Сообщение
#2
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
в зависимости от состояни приложения некоторые из них активны некоторые нет.. ну вот и ответ. по смене состояния управляй действиями. навскидку придумал только обойти рекурсивно всех детей окна имеющих тип QAction и соединить их выполнение с функцией управляющей активностью раз уж так то у каждлого тулбара есть метод void actionTriggered ( QAction * action ) число соединений уменьшится в число действий раз |
|
|
fsMark |
16.7.2009, 12:47
Сообщение
#3
|
Студент Группа: Участник Сообщений: 97 Регистрация: 23.4.2008 Из: г. Киров Пользователь №: 155 Спасибо сказали: 10 раз(а) Репутация: 1 |
Цитата(fsMark @ 16.7.2009, 13:29) * навскидку придумал только обойти рекурсивно всех детей окна имеющих тип QAction и соединить их выполнение с функцией управляющей активностью раз уж так то у каждлого тулбара есть метод void actionTriggered ( QAction * action ) число соединений уменьшится в число действий раз Спасибо, это все очень хорошо, но где гарантия что это вызовется после того как пройдет обработка актиона? |
|
|
kwisp |
16.7.2009, 12:50
Сообщение
#4
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
fsMark,
ну это батенька как вашей душе угодно. это же сигнал. есть порядок соединения объектов есть типы соединений если нужно чтоб метод вызывался после отработки действия то как вариант обработку действия соединять прямым соединением а обработку actionTriggered ( QAction * action ) ставить в очередь. это если не требуется чёткой последовательности действий. это так мысли вслух, можно и по-другому. Сообщение отредактировал kwisp - 16.7.2009, 12:51 |
|
|
fsMark |
16.7.2009, 13:02
Сообщение
#5
|
Студент Группа: Участник Сообщений: 97 Регистрация: 23.4.2008 Из: г. Киров Пользователь №: 155 Спасибо сказали: 10 раз(а) Репутация: 1 |
Спасибо еще раз, туплю после длинной ночи. Просто казалось что должно быть какое то более элегантное решение
|
|
|
kwisp |
16.7.2009, 13:09
Сообщение
#6
|
астарожна ынтжинэр Группа: Участник Сообщений: 1404 Регистрация: 26.11.2008 Из: ТаганрогРодинаЧехова Пользователь №: 435 Спасибо сказали: 113 раз(а) Репутация: 23 |
fsMark,
у меня была подобная задача и на форуме описана. элегантное решение зависит от реализации. смотря чего дибиваешься. гибкости скорости понятности и т.д. если в приложении есть машина состояний то всё решаемо. |
|
|
Текстовая версия | Сейчас: 28.4.2024, 3:18 |