2014-02-16 70 views
0

我只是想知道,是否可以在QCanvas上拖動點。例如,我想在畫布上繪製隨機點,並且我希望每個點都可以在畫布中隨處拖動。在Qcanvas上拖動一個點

回答

0

我剛剛進入pyqt,雖然我已經使用wxPython和WPF做了一些基於canvas的GUI開發,所以我可以給你整體的方法,但不是pyqt的細節。

你應該能夠

  • 捕獲畫布的鼠標左擊事件,
  • 找到最接近的地步,
  • 改變光標,用戶知道他們有「拍」點,
  • 然後將鼠標移動點移動到信號處理程序,最後在鼠標釋放信號處理程序中,「放下」 點(改變其座標和chan ge指針恢復正常)。

你也許應該指出,當鼠標靠近某個點時,可以抓住一個點,通過在該點周圍繪製一個圓圈;那麼當你拖動這個點時,你實際上將這個圓點拖拽到中間點,這樣就很容易看到點的位置。

您應該也可能會響應ESC鍵按下:如果用戶在移動過程中按下ESC,該點將返回到開始位置並中止操作。

對於pyqt,請看How to draw a line with animation in PyQt4:它在派生自QWidget的類中使用QPainter,這似乎是常見模式,但也有QGraphicsView可以提供更高級別的API。 QCanvas類似乎很古老,似乎需要從您的代碼捕獲鼠標事件的QCanvasView。

+0

如何將畫布連接到鼠標單擊?我真的沒有找到任何插槽來做到這一點。 – erbal

相關問題