【发布时间】:2014-03-15 21:46:45
【问题描述】:
我只是想知道,是否可以在 QCanvas 上拖动点。例如,我想在画布上绘制随机点,并且我希望每个点都可以在画布中的任何地方拖动。
【问题讨论】:
我只是想知道,是否可以在 QCanvas 上拖动点。例如,我想在画布上绘制随机点,并且我希望每个点都可以在画布中的任何地方拖动。
【问题讨论】:
虽然我已经使用 wxPython 和 WPF 完成了相当多的基于画布的 GUI 开发,但我刚刚进入 pyqt,所以我可以为您提供总体方法,但不提供 pyqt 的详细信息。
你应该可以
您可能应该通过在该点周围画一个圆圈来表明当鼠标悬停在某个点附近时可以抓取该点;然后,当您拖动点时,您实际上拖动了中间点的圆圈,因此很容易看到点在哪里。
您还应该响应 ESC 键按下:如果用户在移动过程中按下 ESC,则该点将返回到它开始的位置并中止操作。
对于pyqt,请看How to draw a line with animation in PyQt4:它在派生自QWidget的类中使用QPainter,这似乎是常见的模式,但也有可能提供更高级别API的QGraphicsView。 QCanvas 类似乎很旧,并且似乎需要 QCanvasView ,您的代码可以从中捕获鼠标事件。
【讨论】: