假设我有一个QGrahicsRectItem 项,item.width = 10和item.height = 10。它的左上角是(0,0)。 item.BoundingRect()
应该返回RectF(0,0,9,9)
,而是返回RectF(0,0,10,10)
您可以使用以下代码对其进行测试:
QGraphicsRectItem* item = new QGraphicsRectItem(0,0,10,10);
qDebug() << item->boundingRect().width(); // 10, OK
qDebug() << item->boundingRect().height(); // 10, OK
qDebug() << item->boundingRect().topLeft().x(); // 0, OK
qDebug() << item->boundingRect().topLeft().y(); // 0, OK
qDebug() << item->boundingRect().bottomRight().x(); // 10, WHY? should be 9
qDebug() << item->boundingRect().bottomRight().y(); // 10, WHY? should be 9
因此boundingRect()返回一个宽度和高度为11px的RectF,尽管width()和height()声称它们都是10。
怎么了?
答案 0 :(得分:0)
我认为没错。我想像这样(替换10为3)
0 1 2 3
0 |==|==|==|
| 1| 2| 3|
1 |==|==|==|
| 1| 2| 3|
2 |==|==|==|
| 1| 2| 3|
3 |==|==|==|
宽度和高度为3,左下角为[3,3],是吗? :)
编辑:
Here你可以看到它是如何实际计算出来的(请注意,由于历史原因,这是针对QRect和QRectF的计算方式不同(这是文档声称的))。
答案 1 :(得分:0)
我认为你在这里将坐标与数组混淆了。以上结果是正确的。
如果你离墙10米远,转过来测量距离,你应该在10米外,对吗?不是9 - 因为在进行第一步之前你不能进入墙内。这也意味着墙壁厚度为1米。