2015-07-20 71 views
3

我正在做一个Qt程序,其中有用导线连接的矩形(由用户通过鼠标事件放置)。每根电线检查在开始和结束时是否有矩形。如果是这种情况,则放置导线。用于项目交互的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; 
} 

我认为这个问题是边界RECT &形状仅用于选择。 我也尝试使用一个图像(绝望的解决方案),但我找不到一种方法来添加一个图像/ pixmap到我的QpainterPath。

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

谢谢你帮助我:)

回答

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

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

或这在拖放一个线图像的情况下,

  1. 使用QPainterPath的检查矩形
  2. 如果电线是使用图像获取资讯的QRectQPixMap::rect()
  3. 使用bool QPainterPath::contains(const QRectF & rectangle)检查导线是否在QPainterPath