Здравствуйте, гость ( Вход | Регистрация )
|
silver47 |
19.1.2011, 16:17
Сообщение
#1
|
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6
|
Доброго времени суток.
Задача такая: есть класс MainWindow, зависящий от QWidget. Есть другой класс, к примеру MainTab, который ставиться в QTabWidget, расположенного на MainWindow. Необходимо предоставить доступ из класса MainTab к элементам класса MainWindow. Хотел сделать, унаследовав MainTab от MainWindow. maintab.h: Но, получается множественное наследование от QWidget (и MainWindow и MainTab наследуются от QWidget) переделываю на такое: Ругается, что не указан класс до { Сделал передачей указателей на необходимые элементы класса MainWindow в конструктор MainTab. Вопрос: как следует это делать(не передачу указателя в конструкторе, а обращение к элементам одного класса из другого) правильно? Спасибо. |
|
|
|
![]() |
|
Rocky |
19.1.2011, 17:26
Сообщение
#2
|
|
Старейший участник ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7
|
Вот теперь точно непонял.
Цитата Сколько закладок - столько классов, конструкторы которых находятся внутри конструктора MainWidget Это что имеется ввиду? Экземпляры классов создаются в конструкторе MainWidget? Имхо тут наследование вообще не нужно. Оно усложнит только. К тому же, насколько я понимаю, вообще намного более предпочтительней использовать указатель, чем наследование (указатель обернутый в какой-нить QPointer например, в зависимости от того, что нужно). Если __злоупотреблять__ наследованием - это лишнее расходовние памяти, ухудшение скорости работы программы, усложнение кода. Да и прямой доступ я бы вообще не стал давать к QComboBox и пр. Если MainWidget им владеет, значит только он должен знать, как и что туда добавлять. Поэтому с т.з. проектирования лучше написать метод MainWidget::addComboBoxData(...) и т.п. Насчет БД... Куда столько? с таблицами не путаете? Это тоже не есть хорошо, когда у одной программы - 5-10 баз данных... Пусть хоть 10000 таблиц - но в одной базе. По-поводу передачи указателей. Для удобства можно обернуть их в отдельную структуру. Если добавите/удалите какой-нить виджет/БД/еще что-нибудь придется переписывать конструкторы, добавлять новые переменные в классы, которые их будут использовать. А так в одном-двух местах подправил и все (занес в структуру и инициализировал). Масштабируемость какжется называется. Плюс читаемость лучше. Вобщем, мои мысли такие =) |
|
|
|
silver47 Наследование 19.1.2011, 16:17
Rocky А зачем MainTab-у наследоваться от QWidget, если M... 19.1.2011, 16:47
silver47 Нет, Вы не поняли. MainWidget - это мой класс с гл... 19.1.2011, 17:07
igor_bogomolov Цитата(silver47 @ 19.1.2011, 16:17) Задач... 19.1.2011, 17:22
silver47 Цитата(Rocky @ 19.1.2011, 19:26) Это что ... 19.1.2011, 17:41![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 14.12.2025, 11:36 |