crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Управление активностью актионов (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  


Цитата(fsMark @ 16.7.2009, 13:29) *
в зависимости от состояни приложения некоторые из них активны некоторые нет..

ну вот и ответ.
по смене состояния управляй действиями.

Цитата(fsMark @ 16.7.2009, 13:29) *
навскидку придумал только обойти рекурсивно всех детей окна имеющих тип QAction и соединить их выполнение с функцией управляющей активностью

раз уж так то у каждлого тулбара есть метод
void actionTriggered ( QAction * action )
число соединений уменьшится в число действий раз:)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fsMark
  опции профиля:
сообщение 16.7.2009, 12:47
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 97
Регистрация: 23.4.2008
Из: г. Киров
Пользователь №: 155

Спасибо сказали: 10 раз(а)




Репутация:   1  


Цитата(kwisp @ 16.7.2009, 13:44) *
Цитата(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,
у меня была подобная задача и на форуме описана.
элегантное решение зависит от реализации.
смотря чего дибиваешься.
гибкости
скорости
понятности
и т.д.
если в приложении есть машина состояний то всё решаемо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 3:18