Обмен данными между объектами |
Здравствуйте, гость ( Вход | Регистрация )
Обмен данными между объектами |
rcdimon |
21.11.2009, 15:56
Сообщение
#1
|
Студент Группа: Участник Сообщений: 69 Регистрация: 27.10.2009 Пользователь №: 1183 Спасибо сказали: 1 раз(а) Репутация: 0 |
Я еще новичек в С++, поэтому возникают такие вопросы...
У меня есть объект MainWindow, в котором я создаю подключение к базе данных. И есть объект с окном диалога, пусть он называется MyDialogWidget, ему нужно получить некоторые данные из БД. Естественно я не буду в нем создавать новое подключение к базе, так как это не логично. Логично было бы сделать у MainWindow метод, позволяющий объекту MyDialogWidget получить все необходимые данные из БД. Но я не знаю как обратиться из MyDialogWidget к MainWindow. Вообще MyDialogWidget создается MyDialogWidget * Dial = new MyDialogWidget(); Dial->show(); А в MyDialogWidget как мне кажется неплозо было бы сделать что-то вроде this->parent->GetData(Params); Не судите строго ) Расскажите как делаются такие вещи? |
|
|
Litkevich Yuriy |
21.11.2009, 16:23
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
rcdimon, тут есть важный момент:
во-первых, если вести речь только о Си++, то способ будет один; если вести речь о Qt, то способ возможен более продвинутый (компонентное програмирование) во-вторых, возможны разные подходы к проектированию программы (шаблоны проектирования). Опять же в Qt класс отвечающий за соединения с БД - это value class (трудно однозначно перевести), по смыслу "именованный одиночка". Т.е. в диалоге необязательно создавать соединение с БД, в программах на Qt оно глабальное для всего приложения, его можно просто использовать по имени. Посему реши, что именно тебе нужно Только Си++ или Си++/Qt Вообще MyDialogWidget создается обычно предусматривают методы в классе для настройки класса, а также в конструкторе можно предусмотреть необходимые аргументыMyDialogWidget * Dial = new MyDialogWidget(); Dial->show();
|
|
|
rcdimon |
21.11.2009, 16:40
Сообщение
#3
|
Студент Группа: Участник Сообщений: 69 Регистрация: 27.10.2009 Пользователь №: 1183 Спасибо сказали: 1 раз(а) Репутация: 0 |
Меня интересует Си++ с QT. Я пока сколько изучаю его- постоянно радуюсь какой хороший инструмент )
Сообщение отредактировал rcdimon - 21.11.2009, 16:41 |
|
|
Litkevich Yuriy |
21.11.2009, 16:47
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
если в твоей программе только одно соединение с БД, то используй в своём диалоге
QSqlDatabase db = QSqlDatabase::database(); |
|
|
Текстовая версия | Сейчас: 27.12.2024, 5:11 |