Russian Qt Forum
Ноябрь 26, 2024, 06:53 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено]QGraphicsScene.items() - получение данных пользовательского класса  (Прочитано 3065 раз)
qwyllum
Гость
« : Июнь 20, 2013, 12:25 »

Здравствуйте, уважаемые форумчане! Мне необходимо добавлять на сцену пользовательские элементы, которые имеют дополнительные поля, такие как, например, имя. Для чего я создал отдельный класс и наследовал его от QGraphicsItem. Добавление на сцену объектов этого класса работает прекрасно. Но теперь мне нужно получить эти объекты. Код
Код:
    QList <QGraphicsItem*>objl;
    objl=scene.items();
не подходит, т.к. класс QGraphicsItem не содержит нужных полей, которые содержит наследуемый от него класс.
Пробовал так:
Код:
    QList <MovingObject*>objl;
    objl=scene.items();
Но компилятор ругается
error: no match for 'operator=' in 'objl = QGraphicsScene::items(Qt::SortOrder) const((Qt::SortOrder)1u)'
Как поступить? Создать класс от сцены и переопределить там метод? Или я что-то упустил? Подскажите пожалуйста.
« Последнее редактирование: Июнь 20, 2013, 14:17 от qwyllum » Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Июнь 20, 2013, 12:27 »

Или я что-то упустил?
Да, вы полезли в Qt не зная C++. Подмигивающий
Почитайте про приведение типов.
« Последнее редактирование: Июнь 20, 2013, 12:37 от Old » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Июнь 20, 2013, 12:40 »

Код
C++ (Qt)
MovingObject * mo = dynamic_cast <MovingObject *> (obj1[0]);
if (mo) {
...
}
Записан
qwyllum
Гость
« Ответ #3 : Июнь 20, 2013, 12:48 »

Код
C++ (Qt)
MovingObject * mo = dynamic_cast <MovingObject *> (obj1[0]);
if (mo) {
...
}
Огромное спасибо! Работает.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #4 : Июнь 20, 2013, 16:28 »

Код
C++ (Qt)
MovingObject * mo = dynamic_cast <MovingObject *> (obj1[0]);
if (mo) {
...
}
Как вы не последовательны... Строит глазки
И всего то 5 дней назад. Улыбающийся
То да, но что бы вы/мы ни говорили - лезть будут Улыбающийся Там учить надо, чего-то вникать, а тут неск минут - и вот уже окно! Человека привлекает эффект достигнутого, впечатление быстрого прогресса. Невозможно убедить его в том что это "построено на песке" - ведь он только что "сделал", и результат налицо. Поэтому мне кажется нет никакого смысла тратить время на нотации. С новичками надо общаться поменьше, тем более им и так все ясно
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Июнь 20, 2013, 18:14 »

Как вы не последовательны... Строит глазки
Я говорил о бесполезности нотаций и ответоа типа "почитай" - лучше уж промолчать. Да и вообще автор не обязан следовать собственным рекомендациям - они пишутся для других  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #6 : Июнь 20, 2013, 18:24 »

Я говорил о бесполезности нотаций и ответоа типа "почитай" - лучше уж промолчать.
Конечно... Улыбающийся Лучше оказать человеку медвежью услугу в виде "готового решения", чем предложить его выучить азы инструмент, которым он пользуется. Благодетель. Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.179 секунд. Запросов: 22.