crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Обмен данными между объектами
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

Цитата(rcdimon @ 21.11.2009, 18:56) *
Вообще MyDialogWidget создается
MyDialogWidget * Dial = new MyDialogWidget();
Dial->show();
обычно предусматривают методы в классе для настройки класса, а также в конструкторе можно предусмотреть необходимые аргументы
MyDialogWidget * Dial = new MyDialogWidget(mySqlConnetion);
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();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.12.2024, 15:33