![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
lifrost |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 4.3.2011 Из: Миасс Пользователь №: 2468 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Помогите разобраться с множественным наследование. Мне нужны сигналы/слоты в QGraphicsPolygonItem. Решил добавить второго предка QObject:
Ругается, пишет "undefined reference to 'vtable for WindowItem' ". Как быть? |
|
|
abc |
![]()
Сообщение
#2
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
гуглить тоже надо)
тут, в конце http://www.prog.org.ru/topic_10329_0.html WindowItem(QGraphicsItem *parent, QGraphicsScene *scene); передавать итему указатель на сцену нет надобности у итема есть метод: QGraphicsItem::scene () Сообщение отредактировал abc - 22.3.2011, 15:33 |
|
|
Алексей1153 |
![]()
Сообщение
#3
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2943 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
Ругается, пишет "undefined reference to 'vtable for WindowItem' ". когда у меня такая ошибка вылезала (а именно, она вылезала в момент добавления нового класса, производного от QObject и именно как реакция на появление в классе макроса Q_OBJECT), то помогало лишь сделать изменения в файле *.pro (можно просто напечатать пробел, потом его стереть). Затем сборка проходит удачно |
|
|
lifrost |
![]()
Сообщение
#4
|
Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 4.3.2011 Из: Миасс Пользователь №: 2468 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
гуглить тоже надо) тут, в конце http://www.prog.org.ru/topic_10329_0.html WindowItem(QGraphicsItem *parent, QGraphicsScene *scene); передавать итему указатель на сцену нет надобности у итема есть метод: QGraphicsItem::scene () Убрал указатель на счену (и в правду он там не обязателен). Но что-то на счет множественного наследования не получается (( сделал вот так:
Пишет: "invalid conversion from QObject to int", "initializing argument 1 of QPolygonF::QPolygonF(int)" |
|
|
PAFOS |
![]()
Сообщение
#5
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Может побольше кода предоставишь?
|
|
|
lifrost |
![]()
Сообщение
#6
|
Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 4.3.2011 Из: Миасс Пользователь №: 2468 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Может побольше кода предоставишь? // .h
// .cpp
|
|
|
abc |
![]()
Сообщение
#7
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 221 Регистрация: 16.12.2010 Из: СПб Пользователь №: 2272 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
WindowItem::WindowItem(QObject *p, QGraphicsItem *parent) : QGraphicsPolygonItem(p, parent) Я бы убрал QObject из конструктора, суть здесь ведь в том, чтобы добавить родителя, вот у тебя графикитем может быть родителем а компилятор выдал ошибку потому что: : QGraphicsPolygonItem(p, parent) - такого конструктора у полигона просто нет компилятор находит его конструктор с двумя аргументами, и он звучит так: QGraphicsPolygonItem ( const QPolygonF & polygon, QGraphicsItem * parent = 0 ) и он не может передать указатель на QObject туда, где речь о QPolygonF Сообщение отредактировал abc - 23.3.2011, 10:30 |
|
|
lifrost |
![]()
Сообщение
#8
|
Студент ![]() Группа: Участник Сообщений: 38 Регистрация: 4.3.2011 Из: Миасс Пользователь №: 2468 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
WindowItem::WindowItem(QObject *p, QGraphicsItem *parent) : QGraphicsPolygonItem(p, parent) Я бы убрал QObject из конструктора, суть здесь ведь в том, чтобы добавить родителя, вот у тебя графикитем может быть родителем а компилятор выдал ошибку потому что: : QGraphicsPolygonItem(p, parent) - такого конструктора у полигона просто нет компилятор находит его конструктор с двумя аргументами, и он звучит так: QGraphicsPolygonItem ( const QPolygonF & polygon, QGraphicsItem * parent = 0 ) и он не может передать указатель на QObject туда, где речь о QPolygonF =) все гениальное просто. Всем спасибо - все работает! Тема закрыта. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 11.3.2025, 6:00 |