假设我有一个QGrahicsRectItem item item.width = 10和item.height = 10。它的左上角在(0,0)。 item.BoundingRect()
应返回RectF(0,0,9,9)
而是它返回一个RectF(0,0,10,10)
QGraphicsRectItem :: boundingRect()返回一个比它应该大1px的QRectF
您可以用下面的代码进行测试:
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()返回的宽度和11像素高度RectF,虽然宽度( )和身高()声称这两个都是10。
怎么了?
但是RectF仍然是11px宽而不是10.这不是一个透视问题,而是一个导致问题的事实。这才是重点。如果我使用boundingRect()来捕捉我的10px项目中的鼠标事件,那么我还将获得与该项目相距1px的事件。 – problemofficer 2010-11-28 00:20:34