Qt约束矩形/形状以进行项目交互

时间:2015-07-20 14:53:19

标签: c++ qt shape bounding

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

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

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

而不是常规的直肠。问题是现在跟踪我的电线太难了,因为用户必须用鼠标连接2条线,这几乎是不可能的。

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

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

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

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

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

感谢您帮助我:)

1 个答案:

答案 0 :(得分:0)

  1. 如前所述,使用QPainterPath作为检查矩形
  2. QPointF(两分)

  3. 获取电汇的终点
  4. 使用bool QPainterPath::contains(const QPointF & point)检查电线是否在QPainterPath范围内(两次检查电线的起点和终点)

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

    1. 使用QPainterPath作为检查矩形
    2. 如果电线是图片,请使用QRect
    3. 获取电汇的QPixMap::rect()
    4. 使用bool QPainterPath::contains(const QRectF & rectangle)检查电汇是否在QPainterPath
    5. 范围内