矩形测试困境中的点

point in rectangle test dilemma

如果您查看 Qt 关于矩形点测试的文档,他们会说:

bool QRectF::contains(const QPointF & point) const

Returns true if the given point is inside or on the edge of the rectangle; otherwise returns false.

这不可避免地意味着一个点可能同时属于最多 4 个彼此相邻的矩形。是否存在支持这种排列的论据,或者矩形仅包含某些边缘上的点(例如,左上角)会更好吗?

文档说 "edges" 而不是 "corners"。通常边表示一条线,而角或顶点表示一个点。

如果你想排除边缘,QRect 版本的 contains() 可以做到。

您也可以编写自己的 contains() 并使用 QRectF::topLeft() 检查该点是否在左上角。

矩形也可能相交,所以一个点可以同时包含在任意数量的矩形中。