0

有谁知道为什么 QRectF right()/bottom() 方法的行为与 QRect 不同?

下面的例子

QRectF r1(0, 0, 20, 20);
qDebug() << r1.right();

QRect r2(0, 0, 20, 20);
qDebug() << r2.right();

返回此结果:

20
19

当我尝试测量宽度()时,两者都返回 20

QRectF r1(0, 0, 20, 20);
qDebug() << r1.width();

QRect r2(0, 0, 20, 20);
qDebug() << r2.width();


20
20

我试图检查文档,但没有发现任何提及这些差异。

这是什么原因?以及在没有抗锯齿的情况下绘制 1 像素宽度线时如何在 QGraphicsItem 的情况下使用 QRectF?我应该总是调整 boundingRect().adjust(0,0,-1,-1) 吗?

4

1 回答 1

0

派对有点晚了。但是今天我偶然发现了同样的问题。查看 Qt 文档发现所有访问底部和右侧的方法都承担着一些“历史负担”(例如 QRect::bottom()):

请注意,由于历史原因,此函数返回 top() + height() - 1;使用 y() + height() 检索真正的 y 坐标。

另请参阅Qt 文档

于 2020-07-10T10:00:16.100 回答