Название: глобальные установки для всех классов Отправлено: izoomer от Январь 18, 2007, 00:08 Подскажите, каким образом реализуется в QT-4.2 нижеописанная задача ?
Существуют некие глобальные установки различного формата - QString, int и др , в каждом классе проекта нужно иметь доступ к любой из установок. Первое что приходит на ум - это реализация через что то наподбие ini файла, но в этом случае придется считывать переменную при каждом нужном случае или создавать переменную в конструкторе класса . Может есть другие решения в QT? Название: глобальные установки для всех классов Отправлено: Sergeich от Январь 18, 2007, 00:17 Ищи инфу по паттерну Singleton
Название: глобальные установки для всех классов Отправлено: Dendy от Январь 18, 2007, 00:49 В классе хранишь указатель на екземпляр установок. Установки живут пока живут остальньІе классьІ юзающие их. Другой способ - у екземплятов классов иметь информацию о родителе, через которьІй можно получить установки. Можно еще хранить ключ, через которьІй получать установки из синглтона. ОптимальньІй обьектно-ориентированньІй способ - когда каждьІй екземпляр твоего класса независим от остальной части программьІ, а нужньІе ему настройки он хранит в себе статической копией (или в Implicitly Shared классе).
Название: глобальные установки для всех классов Отправлено: Alex03 от Январь 18, 2007, 10:51 ИМХО всё же бывают случаи когда использование глобольных переменных не так уж и плохо/нельзя_ни_за _что! :)
Не хотите совсем глобальную переменную, засунте свои настройки в QMyApplication и пользуйте через: ((QMyApplication*)qApp)->getXXX() а то и от qApp напрямую доступ к членам (не приветствуется). Название: глобальные установки для всех классов Отправлено: bigirbis от Январь 18, 2007, 12:45 А еще можно пронаследовать класс от QObject и сделать его чайлдом QApplication. Ну и статику написать для поиска данного экземпляра...
Название: глобальные установки для всех классов Отправлено: Maz от Январь 18, 2007, 14:24 Почему бы не использовать QSetting. Создать экземпляр класса при загрузке программы и его использовать во всех остальных классах. После завершения программы удалять экземпляр. В классе, в котором создавался этот экземпляр сделать статическую ссылку на экземпляр. Таким образом из любого класса можно обратиться к настройкам.
Еще QSettings желательно настроить на формат INI файла или xml. Название: глобальные установки для всех классов Отправлено: izoomer от Январь 19, 2007, 00:02 каковы преимущества недостатки разных из предложенных способов - обект от QObject или QSetting, или другое ?
что требует меньше кода и интуитивно понятно для использования ? Название: глобальные установки для всех классов Отправлено: Dendy от Январь 19, 2007, 00:31 QSettings - легкая обертка над настройками программьІ, что должньІ использоваться от запуска к запуску программьІ, ето способ сохранять и загружать данньІе на диск. QObject сюда вообще неприменим - нарушение обьектной модели, избьІточность, QObject отражает уникальньІй обьект в системе, а не разделяемьІе данньІе настроек. НужньІ синглтоньІ. Сложно сказать как организовать твои настройки, нужно больше информации. Что за задача, конкретнее?
Название: глобальные установки для всех классов Отправлено: bigirbis от Январь 19, 2007, 11:13 На самом деле QSettings наследует QObject. Просто потом лень писать было. :) А вообще, вобщем случае QSettings предпочтительнее. Но иногда выгоднее хранить данные в структурах, которые потом сохранять в бинарный файл.
|