Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Majestio от Май 31, 2013, 20:59



Название: QAction и глобальные настройки
Отправлено: Majestio от Май 31, 2013, 20:59
Внезапно  :P возник вопрос ...

Разработка проекта движется к завершению. Но Заказчик настоятельно затребовал две фичи:

1) Настройка внешнего вида UI в плане размеров иконок и шрифтов
2) Разграничение полномочий пользователей - кому что-то можно, кому-то что-то из действий нельзя

У меня все действия описаны QAction'ами, но они разбросаны по коду, мама-не-горюй.
Хотелось бы их собрать воедино в какой-нить глобально видимый класс и изменять все одним циклом.
Но есть большие сомнения, что это неосуществимая мечта. Дело в том, что в разработанном мною UI
есть части кода (Виджеты) которые вызываются по N-копий одновременно. Если объявить один QAction,
спрашивается с какой копией он будет работать ...

А с другой стороны вопрос, как в рилтайме одним щелчком перегрузить UI?
Навскидку только приходит идея переписать QAction, чтобы он мог регаться в каком-то глобальном классе
и предоставлять классу возможность себя изменять...

Что скажете?


Название: Re: QAction и глобальные настройки
Отправлено: Bepec от Май 31, 2013, 21:16
Ну по плохому можно тупо сделать синглтон, который будет хранить всё всё всё.


Название: Re: QAction и глобальные настройки
Отправлено: Majestio от Май 31, 2013, 21:53
Ну по плохому можно тупо сделать синглтон, который будет хранить всё всё всё.

Такое у меня уже есть - все глобальные настройки в выделенном глобальном экземпляре класса. Тут вопросов нет. А вот что с QAction'ами делать ....  ???


Название: Re: QAction и глобальные настройки
Отправлено: kambala от Май 31, 2013, 22:47
можно попробовать findChildren<QAction *>()


Название: Re: QAction и глобальные настройки
Отправлено: Majestio от Май 31, 2013, 22:57
можно попробовать findChildren<QAction *>()

Ууу ... у меня около 50 QAtcion'ов  раскиданы по 7-10 "плоскостям". Это будет адЪ))


Название: Re: QAction и глобальные настройки
Отправлено: mutineer от Июнь 01, 2013, 09:54
Сказать заказчику что он поздно очнулся и затребовать перепланировку всего проекта:)


Название: Re: QAction и глобальные настройки
Отправлено: Old от Июнь 01, 2013, 10:00
Можно сделать наследника от QAction и использовать его. Для простоты замены можно сделать:
#define QAction MyAction

А объекты MyAction при конструировании пусть регистрируются в глобальной коллекции экшинов, а при разрушении вычеркиваются.
Тогда у вас всегда будет актуальная коллекция с указателями на все экшины.