Russian Qt Forum
Ноябрь 24, 2024, 09:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: глобальные установки для всех классов  (Прочитано 5595 раз)
izoomer
Гость
« : Январь 18, 2007, 00:08 »

Подскажите, каким образом реализуется в QT-4.2 нижеописанная задача ?

Существуют некие глобальные установки различного формата - QString, int и др , в каждом классе проекта нужно иметь доступ к любой из установок. Первое что приходит на ум - это реализация через что то наподбие ini файла, но в этом случае придется считывать переменную при каждом нужном случае или создавать переменную в конструкторе класса . Может есть другие решения в QT?
Записан
Sergeich
Гость
« Ответ #1 : Январь 18, 2007, 00:17 »

Ищи инфу по паттерну Singleton
Записан
Dendy
Гость
« Ответ #2 : Январь 18, 2007, 00:49 »

В классе хранишь указатель на екземпляр установок. Установки живут пока живут остальньІе классьІ юзающие их. Другой способ - у екземплятов классов иметь информацию о родителе, через которьІй можно получить установки. Можно еще хранить ключ, через которьІй получать установки из синглтона. ОптимальньІй обьектно-ориентированньІй способ - когда каждьІй екземпляр твоего класса независим от остальной части программьІ, а нужньІе ему настройки он хранит в себе статической копией (или в Implicitly Shared классе).
Записан
Alex03
Гость
« Ответ #3 : Январь 18, 2007, 10:51 »

ИМХО всё же бывают случаи когда использование глобольных переменных не так уж и плохо/нельзя_ни_за _что! Улыбающийся

Не хотите совсем глобальную переменную, засунте свои настройки в QMyApplication и пользуйте через:
((QMyApplication*)qApp)->getXXX()
а то и от qApp напрямую доступ к членам (не приветствуется).
Записан
bigirbis
Гость
« Ответ #4 : Январь 18, 2007, 12:45 »

А еще можно пронаследовать класс от QObject и сделать его чайлдом QApplication. Ну и статику написать для поиска данного экземпляра...
Записан
Maz
Гость
« Ответ #5 : Январь 18, 2007, 14:24 »

Почему бы не использовать QSetting. Создать экземпляр класса при загрузке программы и его использовать во всех остальных классах. После завершения программы удалять экземпляр. В классе, в котором создавался этот экземпляр сделать статическую ссылку на экземпляр. Таким образом из любого класса можно обратиться к настройкам.
Еще QSettings желательно настроить на формат INI файла или xml.
Записан
izoomer
Гость
« Ответ #6 : Январь 19, 2007, 00:02 »

каковы преимущества недостатки разных из предложенных способов - обект от QObject или QSetting, или другое ?
что требует меньше кода и интуитивно понятно для использования ?
Записан
Dendy
Гость
« Ответ #7 : Январь 19, 2007, 00:31 »

QSettings - легкая обертка над настройками программьІ, что должньІ использоваться от запуска к запуску программьІ, ето способ сохранять и загружать данньІе на диск. QObject сюда вообще неприменим - нарушение обьектной модели, избьІточность, QObject отражает уникальньІй обьект в системе, а не разделяемьІе данньІе настроек. НужньІ синглтоньІ. Сложно сказать как организовать твои настройки, нужно больше информации. Что за задача, конкретнее?
Записан
bigirbis
Гость
« Ответ #8 : Январь 19, 2007, 11:13 »

На самом деле QSettings наследует QObject. Просто потом лень писать было. Улыбающийся А вообще, вобщем случае QSettings предпочтительнее. Но иногда выгоднее хранить данные в структурах, которые потом сохранять в бинарный файл.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 20.