【问题标题】:Drag a point on Qcanvas在 Qcanvas 上拖动一个点
【发布时间】:2014-03-15 21:46:45
【问题描述】:

我只是想知道,是否可以在 QCanvas 上拖动点。例如,我想在画布上绘制随机点,并且我希望每个点都可以在画布中的任何地方拖动。

【问题讨论】:

    标签: qt4 pyqt


    【解决方案1】:

    虽然我已经使用 wxPython 和 WPF 完成了相当多的基于画布的 GUI 开发,但我刚刚进入 pyqt,所以我可以为您提供总体方法,但不提供 pyqt 的详细信息。

    你应该可以

    • 捕捉画布鼠标左键点击事件,
    • 找到离它最近的点,
    • 改变光标,让用户知道他们已经“抓住”了这一点,
    • 然后移动点作为鼠标移动信号处理程序,最后
    • 在鼠标释放信号处理程序中,“放下” 点(更改其坐标并将光标恢复正常)。

    您可能应该通过在该点周围画一个圆圈来表明当鼠标悬停在某个点附近时可以抓取该点;然后,当您拖动点时,您实际上拖动了中间点的圆圈,因此很容易看到点在哪里。

    您还应该响应 ESC 键按下:如果用户在移动过程中按下 ESC,则该点将返回到它开始的位置并中止操作。

    对于pyqt,请看How to draw a line with animation in PyQt4:它在派生自QWidget的类中使用QPainter,这似乎是常见的模式,但也有可能提供更高级别API的QGraphicsView。 QCanvas 类似乎很旧,并且似乎需要 QCanvasView ,您的代码可以从中捕获鼠标事件。

    【讨论】:

    • 如何将我的画布连接到鼠标点击?我真的没有找到任何机会来做这件事。
    猜你喜欢
    • 2018-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 2019-02-27
    • 2016-03-12
    相关资源
    最近更新 更多