Russian Qt Forum
Ноябрь 24, 2024, 09:21
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
глобальные установки для всех классов
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: глобальные установки для всех классов (Прочитано 5591 раз)
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
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...