当我尝试旋转QGraphicsSvgItem
对象并设置位置时,我遇到了一个奇怪的问题/功能。
检查以下示例:.svg
为简单起见,我有一个蓝色矩形。我使用该文件创建了两个QGraphicsSvgItem
,然后将它们旋转 90 度。我将它们都设置为相同的位置,但是旋转的位置“错误”(也许这是正确的行为)。看起来 x,y 坐标(左上角)现在是右上角,仍然没有旋转。从我的角度来看,这看起来很奇怪,我希望当我旋转并设置位置时,形状的“第一点”应该是形状“开始”的位置。
我希望源代码比我上面写的更容易理解:
SVGDom *bubbleDom = shadowgram->bubble();
_bubble = new DrawableSvgItem(sh->message(), bubbleDom->byteArray());
this->addItem(_bubble);
_bubble->setPos((this->width()-_bubble->sceneBoundingRect().width()) / 2, (this->height() - _bubble->sceneBoundingRect().height()) / 2);
qDebug() <<"Bubble pos: " << _bubble->pos();
qDebug() <<"Bubble boundindRect: " << _bubble->boundingRect();
qDebug() << "Bubble rect: " <<_bubble->sceneBoundingRect();
qDebug() << "Bubble topleft: " <<_bubble->sceneBoundingRect().topLeft();
DrawableSvgItem *bubble2 = new DrawableSvgItem(sh->message(), bubbleDom->byteArray());
this->addItem(bubble2);
bubble2->setRotation(90);
bubble2->setPos(_bubble->pos());
qDebug() << "Bubble2 pos: " << bubble2->pos();
qDebug() <<"Bubble2 boundindRect: " << bubble2->boundingRect();
qDebug() << "Bubble2 rect: " <<bubble2->sceneBoundingRect();
qDebug() <<"Bubble2 topleft: " << bubble2->sceneBoundingRect().topLeft();
DrawableSvgItem 只是 QGraphicsSvgItem 的扩展,我创建它是为了将源路径绘制到项目中。目前我没有使用它。
输出:
Bubble pos: QPointF(413.5, 297)
Bubble boundindRect: QRectF(0,0 171x117)
Bubble rect: QRectF(296.5,297 117x171)
Bubble topleft: QPointF(296.5, 297)
Bubble2 pos: QPointF(413.5, 297)
Bubble2 boundindRect: QRectF(0,0 171x117)
Bubble2 rect: QRectF(411.458,297 173.016x119.967)
Bubble2 topleft: QPointF(411.458, 297)
在图片中,我期望以下内容:
但我得到了以下图像:
我在这里发现了类似的问题。