Russian Qt Forum

Qt => Вопросы новичков => Тема начата: qwyllum от Июнь 20, 2013, 12:25



Название: [Решено]QGraphicsScene.items() - получение данных пользовательского класса
Отправлено: 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)'
Как поступить? Создать класс от сцены и переопределить там метод? Или я что-то упустил? Подскажите пожалуйста.


Название: Re: QGraphicsScene.items() - получение данных пользовательского класса
Отправлено: Old от Июнь 20, 2013, 12:27
Или я что-то упустил?
Да, вы полезли в Qt не зная C++. ;)
Почитайте про приведение типов.


Название: Re: QGraphicsScene.items() - получение данных пользовательского класса
Отправлено: Igors от Июнь 20, 2013, 12:40
Код
C++ (Qt)
MovingObject * mo = dynamic_cast <MovingObject *> (obj1[0]);
if (mo) {
...
}


Название: Re: QGraphicsScene.items() - получение данных пользовательского класса
Отправлено: qwyllum от Июнь 20, 2013, 12:48
Код
C++ (Qt)
MovingObject * mo = dynamic_cast <MovingObject *> (obj1[0]);
if (mo) {
...
}
Огромное спасибо! Работает.


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


Название: Re: QGraphicsScene.items() - получение данных пользовательского класса
Отправлено: Igors от Июнь 20, 2013, 18:14
Как вы не последовательны... ::)
Я говорил о бесполезности нотаций и ответоа типа "почитай" - лучше уж промолчать. Да и вообще автор не обязан следовать собственным рекомендациям - они пишутся для других  :)


Название: Re: QGraphicsScene.items() - получение данных пользовательского класса
Отправлено: Old от Июнь 20, 2013, 18:24
Я говорил о бесполезности нотаций и ответоа типа "почитай" - лучше уж промолчать.
Конечно... :) Лучше оказать человеку медвежью услугу в виде "готового решения", чем предложить его выучить азы инструмент, которым он пользуется. Благодетель. :)