目前我试图从我自己的 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();
}