为已经转换的QGraphicsItem设置转换原点

问题描述

我有一只机械手,其中包含两个相连的移动臂。当arm1旋转时,arm2也围绕arm1的相同原点旋转。当arm2旋转时,arm1不应移动,而arm2应该围绕arm2的原点旋转。

    QPixmap arm1(":/new/prefix2/pictures/arm1.png");
    QPixmap arm2(":/new/prefix2/pictures/arm2.png");

    QGraphicsPixmapItem *arm1p = new QGraphicsPixmapItem(arm1);
    QGraphicsPixmapItem *arm2p = new QGraphicsPixmapItem(arm2);

    QGraphicsScene *scene = new QGraphicsScene();

    arm1p->setScale(scale);
    arm1p->deviceTransform(ui->graphicsView->viewportTransform()).map(QPointF(0,0));

    arm2p->setScale(scale);
    arm2p->deviceTransform(ui->graphicsView->viewportTransform()).map(QPointF(0,0));

以下代码用于围绕arm1原点旋转arm1和arm2。

    arm1p->setTransformOriginPoint(29,375);
    arm1p->setPos(((29*scale)-29)+(390*scale),((375*scale)-375)+(106*scale));
    arm1p->setRotation(arm1angle);

    arm2p->setTransformOriginPoint(-581,478);
    arm2p->setPos(((-581*scale)-(-581))+(1004*scale),((478*scale)-478)+(0*scale));
    arm2p->setRotation(arm1angle);

而且效果很好。 但是,当我只想旋转arm2时,我希望arm1和arm2保持它们的位置,并只是绕着不同的原点旋转arm2。我编写了以下代码,但运行不正常。

    arm1p->setTransformOriginPoint(29,((478*scale)-478)+(0*scale));
    arm2p->setRotation(arm1angle);

    arm2p->setTransformOriginPoint(97,148);
    arm2p->setRotation(arm2angle);

在保持arm1旋转和位置不变的同时,如何让arm2绕其原点旋转?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)