2015-07-20 69 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