假設我有一個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