crossplatform.ru

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

> Наследование, Множественное наследование от QWidget
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:
#include <QWidget>
#include "mainwindow.h"

class MainTab : public QWidget, public MainWindow
{
....
};


Но, получается множественное наследование от QWidget (и MainWindow и MainTab наследуются от QWidget)
переделываю на такое:
#include <QWidget>
#include "mainwindow.h"

class MainTab : public MainWindow
{
....
};

Ругается, что не указан класс до {

Сделал передачей указателей на необходимые элементы класса MainWindow в конструктор MainTab.

Вопрос: как следует это делать(не передачу указателя в конструкторе, а обращение к элементам одного класса из другого) правильно?

Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
igor_bogomolov
  опции профиля:
сообщение 19.1.2011, 17:22
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Цитата(silver47 @ 19.1.2011, 16:17) *
Задача такая: есть класс MainWindow, зависящий от QWidget. Есть другой класс, к примеру MainTab, который ставиться в QTabWidget, расположенного на MainWindow.
Необходимо предоставить доступ из класса MainTab к элементам класса MainWindow. Хотел сделать, унаследовав MainTab от MainWindow.
теоритически, если бы такая конструкция была возможна, доступа до нужных вам данных вы бы не получили. Существующий MainWindow и тот что создастся при создании MainTab - это два разных объекта одного типа. Соответственно у каждого из них свой набор данных, никак не связанных (если конечно они не статические, что врят ли)

Решений можно придумать много. Можно передать указатель MainWindow в MainTab, и получать доступ к нужным данным через интерфейс MainWindow.
Можно, как ты и сделал, в конструкторе передавать необходимые данные. Если данных много, это может быть неудобным, тогда можно написать пару функций для передачи этих данных (что то типа setSqlDatabase).

P.S. И совет, учите с++. Название темы, как раз то с чего можно начать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


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


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




RSS Текстовая версия Сейчас: 7.3.2025, 22:37