Помогите разобраться как правильно бы унаследоваться., Вообщем шаблоное что наверно |
Здравствуйте, гость ( Вход | Регистрация )
Помогите разобраться как правильно бы унаследоваться., Вообщем шаблоное что наверно |
maxvanceffer |
20.12.2009, 18:52
Сообщение
#1
|
Студент Группа: Участник Сообщений: 72 Регистрация: 30.5.2009 Из: Moldova Пользователь №: 790 Спасибо сказали: 0 раз(а) Репутация: 0 |
Стоит вот такая задача :
У меня в программе есть несколько так называемых страничек (WidgetPage) их класс унаследован от QWidget , так вот у них одинаковые функции и задачи в принципе. Управляет ими класс PageManager, каждая из страничек унаследована от класса Page который содержит информацию необходимою для PageManager. И тут вот такая загвоздка хочу использовать сигналы и слоты в классе Page. Но получаеться что QObject должен быть только у одного из базового класса . В структура для нагладности : // Так наследуеться странички WidgetPage:public QWidget,public Page{....}; //А в манагере страничек хотелось бы регестрировать странички для упровления ими вот таким способом void PageManager::register(Page *ptr){ connect(ptr,SIGNAL(NeedData()),this,SLOT(giveData)); } Вообщем двумя словами как сделать бы так чтоб у всех строничек сто пудов были одни и тежи сигналы и слоты (естественно при правильном наследовании) ..... Первое что приходит на ум это унаследовать Page от QWidget а уже потом WidgetPage:public Page . И вопрос правильно ли это будет ? Сообщение отредактировал maxvanceffer - 20.12.2009, 18:54 |
|
|
Litkevich Yuriy |
20.12.2009, 19:06
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
maxvanceffer |
20.12.2009, 19:20
Сообщение
#3
|
Студент Группа: Участник Сообщений: 72 Регистрация: 30.5.2009 Из: Moldova Пользователь №: 790 Спасибо сказали: 0 раз(а) Репутация: 0 |
Да в принципе нет наверно. Просто они у меня отображаются в QStackedWidget а он может в принципе отображать и QDialog, QWidget и т.д.
Но для заказчика для каждой странички так или и наче нужен ui файл чтоб он сам там мог ковыряться. Сообщение отредактировал maxvanceffer - 20.12.2009, 19:22 |
|
|
DEADHUNT |
20.12.2009, 20:04
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
Но получаеться что QObject должен быть только у одного из базового класса К сожалению, я тоже наткнулся на это ограничение в Qt.Только обходить, например вот какой вопрос: Нужно ли наследоватся от QWidget для конкретной страницы? а если виртуальное наследование? QObject один будет. |
|
|
maxvanceffer |
20.12.2009, 20:25
Сообщение
#5
|
Студент Группа: Участник Сообщений: 72 Регистрация: 30.5.2009 Из: Moldova Пользователь №: 790 Спасибо сказали: 0 раз(а) Репутация: 0 |
Это как ? Обьясни подробней ! Кто от кого ?
Вот тут еще кое что пришло на ум а если просто вставить Q_OBJECT макрос в начало класса Page заработают сигналы и слоты ? Сообщение отредактировал maxvanceffer - 20.12.2009, 20:35 |
|
|
DEADHUNT |
20.12.2009, 20:59
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
так если правильно понял что надо:
|
|
|
BRE |
20.12.2009, 21:05
Сообщение
#7
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
|
|
|
DEADHUNT |
20.12.2009, 21:24
Сообщение
#8
|
Активный участник Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: 2 |
да ошибся, и этот код это подтверждает
|
|
|
BRE |
20.12.2009, 21:32
Сообщение
#9
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
Управляет ими класс PageManager, каждая из страничек унаследована от класса Page который содержит информацию необходимою для PageManager. И тут вот такая загвоздка хочу использовать сигналы и слоты в классе Page. Но получаеться что QObject должен быть только у одного из базового класса . В структура для нагладности : // Так наследуеться странички WidgetPage:public QWidget,public Page{....}; А если сделать так:
|
|
|
Litkevich Yuriy |
20.12.2009, 21:43
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
Насколько я помню, виртуальное наследование это нечто вроде: , я тоже так думаю.Но есть замечание: Цитата Virtual inheritance with QObject is not supported. тык
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 22:36 |