一、前言
Qt的图形视图框架中,可以使用如下接口设置图元坐标:
void QGraphicsItem::setPos(const QPointF &pos)
Sets the position of the item to pos, which is in parent coordinates. For items with no parent, pos is in scene coordinates.
The position of the item describes its origin (local coordinate (0, 0)) in parent coordinates.
官方注释:在父坐标系中根据坐标pos设置图元的位置。如果图元没有父图元,pos就是场景坐标系。
Qt的图形视图框架中,可以使用如下接口设置父子层级:
void QGraphicsItem::setParentItem(QGraphicsItem *newParent)
当然,也可以从构造函数中传递参数设置父子层级
二、器件旋转
Qt的图形视图框架中,可以使用如下接口设置图元旋转:
void setRotation(qreal angle);
器件旋转不会改变器件的场景坐标,例如:假如上图器件的scenePos为(64,128),则不管你旋转到那个位置,它的scenePos始终为(64,128)
三、场景
现在我有一个器件,需要显示器件ID,就像这样:
我使用了图元组合,使一个QGraphicsTextItem作为子图元,自定义图元LineElementItem作为父图元
如果使用setPos,图元LineElementItem应该是相对于场景坐标系进行移动,图元QGraphicsTextItem应该是相对于父图元LineElementItem的坐标系进行移动
我现在要旋转器件,要让器件ID始终保持在一个合适的位置,所以旋转完器件之后,需要进行ID位置校正
在这块卡了一下,反复测试发现,旋转完,父图元的坐标系也进行了旋转,如下图示:
注意:旋转之后,父坐标系的坐标原点不会变(始终是红色圈圈)
粉丝福利,莬费领取Qt开发学习资料包、技术视频,内容包括(Qt实战项目视频教程+代码,C++语言基础,C++设计模式,Qt编程入门,Qt信号与槽机制,Qt界面开发-图像绘制,Qt网络,Qt数据库编程,Qt项目实战教程,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击莬费领取↓↓