![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Darvin |
![]()
Сообщение
#1
|
Студент ![]() Группа: Новичок Сообщений: 36 Регистрация: 30.11.2007 Пользователь №: 30 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Подскажите правильный общий метод решения следующей задачи.
Наследую class MyPixmap: public QPixmap //в котором добавлено дополнительное описание объекта Pixmap { ... public: //пусть пока так MyType X; //некоторое описание ... } MyPixmap::MyPixmap(const QString& filename, MyType _x):QPixmap(filename) { X=_x; } Загружаю картинку, делаю приведение типов и добавляю картинку в сцену используя стандартные функции QT. QGraphicsPixmapItem *item = scene->addPixmap((QPixmap)MyPixmap("my_file.jpg",x_value)); В сцену добавляется QPixmap, но сцена ничего не знает о новых членах(X) класса MyPixmap. Замечу, что я сознательно не стал заводить внешнюю переменную MyPixmap или расширять класс сцены, в котором для каждого QGraphicsPixmapItem, должен быть сопоставлен MyPixmap с описанием. При этом придется написать много лишнего кода, для обслуживания данного соотвествия. Хочу в любом месте программы получить доступ к членам класса MyPixmap, выполнив простое приведение типов ((MyPixmap *)(&(item->pixmap())))->X Никак не получается. Наверное это неправильно? Как сделать лучше? |
|
|
![]() |
Swappp |
![]()
Сообщение
#2
|
Студент ![]() Группа: Новичок Сообщений: 20 Регистрация: 26.11.2007 Пользователь №: 25 Спасибо сказали: 1 раз(а) Репутация: ![]() ![]() ![]() |
QGraphicsPixmapItem *item = scene->addPixmap((QPixmap)MyPixmap("my_file.jpg",x_value));
Давай разберем, что обозначает эта строчка? MyPixmap("my_file.jpg",x_value) создать экземпляр класса. (QPixmap)MyPixmap("my_file.jpg",x_value) а тут происходит приведение типа, а не указателя, т.е. создается фактически копия, но ее тип уже QPixmap... Естественно до методов MyPixmap не добраться. В общем, ИМХО тут ничего не получится. Нужно создавать свою реализацию QGraphicsPixmapItem, тем более это достаточно просто. |
|
|
ViGOur |
![]()
Сообщение
#3
|
![]() Мастер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: ![]() ![]() ![]() |
(QPixmap)MyPixmap("my_file.jpg",x_value) а тут происходит приведение типа, а не указателя, т.е. создается фактически копия, но ее тип уже QPixmap... Естественно до методов MyPixmap не добраться. Не успел ![]() В общем, ИМХО тут ничего не получится. Нужно создавать свою реализацию QGraphicsPixmapItem, тем более это достаточно просто. Согласен.
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 27.6.2025, 23:35 |