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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Отделение логики от интерфейса  (Прочитано 4745 раз)
mwChief
Гость
« : Март 03, 2011, 23:30 »

Возникла необходимость написать небольшую программу которая работает с базой данный. Программа имеет несколько диалоговых окон, в разных окнах могут отображаться разные таблицы базы. Также использую QSettings для хранения настроек. И вот решая вопрос использования всеми окнами одного объекта класса QSqlDatabase и одного объекта QSettings (сейчас передаю указатели в качестве параметра конструкторам классов дочерних окон) словил себя на том что у меня логика работы программы перемешана с интерфейсом. Как с этим бороться и стоит ли? И где нужно проводить эту границу, если она есть?
Записан
Eten
Гость
« Ответ #1 : Март 04, 2011, 08:10 »

Если я тебя правильно понял, то у тебя есть несколько мест с хранением данных, которые обрабатываются через два объекта. Тогда все это относится к MVC модели.  Подмигивающий
Записан
shirushizo
Гость
« Ответ #2 : Март 04, 2011, 10:39 »

QSqlDatabase можно создать и открыть в main.cpp. Все запросы и модели принимают в конструктор название соединения.

А QSettings можно либо создавать в каждом модуле (потери производительности не должно быть), либо передавать в конструктор уже считанные параметры.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #3 : Март 04, 2011, 13:08 »

...словил себя на том что у меня логика работы программы перемешана с интерфейсом. Как с этим бороться и стоит ли? И где нужно проводить эту границу, если она есть?
Бороться стОит (пусть часто в этой борьбе побеждает змий  Улыбающийся) Для начала "на уровне cpp файлов", напр. эти файлы используют QtGui, а эти нет, так же и с базой. Вероятно придется добавить несколько простеньких классов "адаптеров", но эффект получается положительный.
Записан
mwChief
Гость
« Ответ #4 : Март 04, 2011, 19:58 »

Спасибо за ответы. В целом проблем с использованием базы и настроек в разных окнах нет. Меня больше всего интересовало как отделять логику работы программы от интерфейса. Как я понимаю в маленьких программах с интерфейсом от этого просто не уйти, либо же это приведет к излишнему усложнению, но хотелось бы знать как это вообще делается в бОльших проектах.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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