Qt我是程序员;您好程先生;叫我序员就好了Qt

QRect与QRectF

2015-03-24  本文已影响7773人  HikeForWELL
九寨
图片引用自花瓣

一直在与QRect和QRectF打交道。
甚至在使用过程中因为QRect而出现了致命的Bug。
因为QRect在数据存储表示上有一个很大的“历史遗留问题”!

QRect Class

历史遗留的right()
也就是说,对于QRect来说,使用TopLeft获得的是正确的左上角坐标,但是其BottomRight()坐标是不正确的!
对比QRectF就很清晰了.
QRectF Class
QRectF

例子

拿一个例子来对比,假设有一个矩形左上角为(0, 0),长宽都为100.那么我们期待的一个矩形的左上角和右下角应该是(0, 0)(100, 100)。
但,如果用构造函数QRect(0, 0, 100, 100)会得到:

而对于构造函数QRectF(0, 0, 100, 100)会得到:

但是,这里的QRect和QRectF在实际绘制过程中会重叠,也就是说他们实际上是一样的。

所以文档才建议,或者你可以使用QRectF,否则就要把这个陷阱铭记于心。
同时构造QRect的时候,建议使用。

注意

请注意使用如下两个构造函数构造同一个矩形的差异。

上一篇下一篇

猜你喜欢

热点阅读