На данный момент я пытаюсь получить элементы из моего собственного QGraphicsView, который является производным от: QObject и: QGraphicsPixmapItem. Итак, я добавил 2 элемента в свою сцену, и теперь я хочу, чтобы эти элементы выводились другим методом с помощью QList <QGraphicsItem*>
, но, к сожалению, это не работает, и QGraphicsItem::toGraphicsObject()
возвращает 0.
Итак, я нашел это описание в Qt-Reference-Documentation:
QGraphicsObject * QGraphicsItem::toGraphicsObject ()
Return the graphics item cast to a QGraphicsObject, if the class is actually a
graphics object, 0 otherwise.
Потому что я хочу анимировать элемент, который я хочу получить от своего itemList
и хочу setTargetObject
для myAnimation
. Но этому методу нужен QGraphicsObject
, поэтому мне нужно преобразовать его в. Надеюсь, мой исходный код говорит немного больше:
-- А.ч --
class A : public QObject, public QGraphicsPixmapItem
{
Q_OBJECT
Q_PROPERTY (QPointF pos READ pos WRITE setPos)
public:
A()
{
setTransformationMode (Qt::SmoothTransformation);
}
QPointF itemPos;
};
-- A.cpp--
void A::method()
{
QList <QGraphicsItem*> itemList = myGraphicsView -> items();
QGraphicsObject *test = itemList.at (0) -> toGraphicsObject();
qDebug() << test; // <-- QGraphicsObject(0)
myAnimation -> setTargetObject (test);
myAnimation -> setPropertyName ("pos");
myAnimation -> setStartValue (QPointF (0, 100));
myAnimation -> setEndValue (QPointF (60, 100));
myAnimation -> start();
}