![]() |
|
|
![]()
|
|
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Здравствуйте.
Идея следующая: имеется набор параметров (имя, тип, значение, м.б. что-то ещё - например, регэкс для поля ввода), сгруппированных по секциям. Хранятся они (ну... допустим) в xml-файле. Хочу сделать модулёк, который строит по этому файлу "стандартный" диалог настроек типа такого ![]() т.е. имена секций слева списком, а справа параметры, относящиеся к выделенной секции - имя и поле ввода, тип которого зависит от типа параметра. Как это всё делать ручками - понятно на 0x64%. Вопрос: есть ли готовые подобные решения ? Спасибо. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| _GRIN_ |
|
|||
![]() одинокий падаван ![]() ![]() Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: 6 Всего: 7 |
думаю врядли
Интересно, я например хз. как сделать такое УНИВЕРСАЛЬНОЕ решение, что бы формировало окошко, подобное тому как на скришоте (с картинками и т.д.) из любого моего конфига. -------------------- Дорогу осилит идущий |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
ну.... это я по-максимуму захотел (хотя и это тоже не бином Ньютона). Мне бы чтобы просто было имя параметра и поле ввода (lineEdit - для параметров типа текст, spinEdit - для числовых, comboBox - для выбора из списка, checkBox - для булевских). А всякие картинки, гиперссылки, и т.п. - совершенно необязательно. Жалко. Не хочется велосипедировать... Но, если готового нет - то придётся. Хотя, подождём, может кто-нибудь видел... -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
С картинками тоже проблем особых нет - указываешь в xml имя ресурса, начинающееся с ':' или путь до файла с картинкой.
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Господа, как делать это ручками - понятно. Тем более, что формат файла я сам буду разрабатывать. Не хочется изобретать двухколёсное средство передвижения с ножной тягой...
Что-то подобное я видел в PSI. Но м.б. я и ошибаюсь -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
У таких решений есть определенные недостатки. Часто отсутствует какая-либо динамика и зависимости между элементами настроек - например зависимость между состояниями чекбоксов и доступностью других элементов управления. Дубовая валидация пользовательского ввода, когда проверка на вхождение в диапазон - это максимум, что ты можешь сделать. Когда дейсвия в страницах влияют на само дерево настроек и его иерархию. И куча всяких мелких, но неприятных вещей, которые могут вылезти в последствии. Поэтому имеет смысл думать не о полностью автоматическом построении дерева настроек, а о комбинированных решениях с возможностью задания кастомных страниц настроек.
|
|||
|
||||
| newbee |
|
|||
![]() Бревно ![]() ![]() Профиль Группа: Участник Сообщений: 703 Регистрация: 24.8.2011 Репутация: 1 Всего: 19 |
По-моему у многих программистов, когда-либо занимавшихся разработкой приложений с графическим интерфейсом с модулем настройки, есть наработки по созданию обобщенного модуля конфигурирования. Я сначала делалатакую вещь на XML-файлах, столкнулась с проблемами, описанными Amp, то есть вроде бы обощенное решение на деле не учитывает и не расширяется до множества частных задач. Первым решением было внедрение в XML программируемых элементов (аля скриптовый язык внутри XML). В общем это было конечно рабочим, но монстроватым, в итоге XML был выброшен на помойку как совершенно бесполезная технология усложнения ПО и модуль переписан на лисп: сразу и возможность ведения древовидных конфигов на макросах и динамичность и программируемость из коробки.
-------------------- You're face to face With man who sold the world |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
![]() вот (ооочень примерно) что я хочу. но не так (всё в виде строк), а чуток красивее. Amp, newbee, спасибо. Ценные замечания. кроме совета бросить всё и сделать это на лиспе... ессно - -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Сделал... Здесь описание
А вот куда лучше залить исходники - хочу вас попросить подсказать. Пока что кидаю на свой дропбокс -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Alca |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3993 Регистрация: 14.6.2006 Репутация: 2 Всего: 50 |
||||
|
||||
| Amp |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 886 Регистрация: 17.2.2009 Репутация: 7 Всего: 17 |
Кстати напомнило, что диалог настроек VS - ну просто совершенно неюзабельная штука. Всякий раз тратится куча времени, чтобы что-то там найти. Вместо того, чтобы менять дизайн студии, прикрутили бы там поле поиска.
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Alca, спасибо, но я уже сделал проект на СФ - https://sourceforge.net/projects/guisettings/
это у меня в \todo -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
borisbn, есть предложения по улучшению.
1. возможность загрузки значений переменных не только из xml, но и из программы. Для этого можно использовать The Property System. Благодаря этому в xml можно будет сразу указать: value_property="<property_name>" и items_property="<property_name>"; а Config сам запросит нужные свойства при необходимости, а так же задаст их. 2. Каждый раз вызывать cfg.get( "First section name", "Dir for log" ) по-моему долго (да и писанины много). Имхо, лучше сделать так: Конфиг состоит из секций и значений. Конфиг является глобальной секцией (потомок класса ConfigSection). У ConfigSection есть методы: ConfigSection* section(QString), ConfigSection* addSection(QString), ConfigValue* value(QString), ConfigValue* addValue(QString); которые необходимы для получения доступа к элементам, а так же для генерации конфигурации без использования xml. Если этот конфиг вылизать, то можно будет толкнуть в Qt Project. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Апдейтнул проект на sourceforge - добавил возможность поиска параметра по имени из GUI
bsa, Спасибо за предложения. Возможность добавления параметра из программы стоит первое в \todo По поводу второго пункта - долго быть не должно (я специально при изменении на экране делаю копию в map map'ов для быстрого доступа. По поводу писанины - согласен. Длинновато. Что-нибудь придумаю. А по поводу - получить секцию и работать непосредственно с ней - ИМХО интерфейс класса получится сложноватым... Но что-нибудь в этом роде можно придумать. Типа как в QSettings:
Вы это серьёзно ? Если да, то предприму для этого всё (ну, или почти всё))) Единственное, чего хочется, так это чтоб использование этого конфига было бы максимально простым Жду дальнейших предложений. Это сообщение отредактировал(а) borisbn - 13.3.2012, 20:02 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Я тебе уже написал основные методы:
|
||||
|
|||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |