3

我正在做一个 Qt 程序,其中有用电线链接的矩形(由用户通过鼠标事件放置)。每根线都会检查它的开头和结尾是否有一个矩形。如果是这种情况,则放置电线。

我最近想把我的矩形变成水平线(更好的视觉效果),所以我写道:

QRectF myRect(-15, 0, 30, 1);

而不是常规的矩形。问题是现在追踪我的线太难了,因为用户必须用鼠标链接两条线,这几乎是不可能的。

我试图改变边界矩形/形状,但它们都不起作用:

QRectF Port::boundingRect()
{
    return QRectF(-15, 0, 30, 10);
}

QPainterPath Port::shape()
{
    QPainterPath path;
    path.addRect(-15, 0, 30, 10);
    return path;
}

我认为问题在于边界矩形和形状仅用于选择。我也尝试使用图像(绝望的解决方案),但我找不到将图像/像素图添加到我的 QpainterPath 的方法。

我知道我可以使用一条线而不是一个平面矩形,但问题仍然是一样的。

谢谢你帮助我:)

4

1 回答 1

0
  1. 如您所提到的,使用QPainterPath检查矩形
  2. 获取导线的端点QPointF(两点)

  3. 用于bool QPainterPath::contains(const QPointF & point)检查导线是否在范围内QPainterPath(两次检查导线的起点和终点)

或者在拖放线图像的情况下,

  1. 使用QPainterPath检查矩形
  2. 如果电线是图像,则使用获取QRect电线的QPixMap::rect()
  3. 用于bool QPainterPath::contains(const QRectF & rectangle)检查电线是否在QPainterPath
于 2015-07-20T15:03:48.880 回答