C 如何在GTK3中处理鼠标运动事件?
我正在尝试使用C/GTK3/CAROO实现以下功能: -左键单击GtkDrawingArea小部件并打印坐标Xo和Yo -按住左键的同时,移动鼠标并绘制一条线连接(Xo,Yo)到当前鼠标位置 -释放鼠标左键并打印(“某物”) 我该怎么做?有谁知道一个很好的教程展示了如何处理鼠标点击移动事件 到目前为止,我发现最好的是这个zetcode(它显示了如何处理鼠标点击事件,而不是向下/移动/向上按钮),它解释了当鼠标悬停在小部件上时如何更改鼠标光标 谢谢你从Gtk的人那里看到了吗?这是用C写的,但是是同一个程序。遗憾的是,它的格式不是很好 无论如何,在构造函数(C 如何在GTK3中处理鼠标运动事件?,c,mouseevent,gtk3,cairo,C,Mouseevent,Gtk3,Cairo,我正在尝试使用C/GTK3/CAROO实现以下功能: -左键单击GtkDrawingArea小部件并打印坐标Xo和Yo -按住左键的同时,移动鼠标并绘制一条线连接(Xo,Yo)到当前鼠标位置 -释放鼠标左键并打印(“某物”) 我该怎么做?有谁知道一个很好的教程展示了如何处理鼠标点击移动事件 到目前为止,我发现最好的是这个zetcode(它显示了如何处理鼠标点击事件,而不是向下/移动/向上按钮),它解释了当鼠标悬停在小部件上时如何更改鼠标光标 谢谢你从Gtk的人那里看到了吗?这是用C写的,但是是同
\uuuu init\uuuu
)中,调用连接到运动通知事件
您还需要连接到按钮按下事件和按钮释放事件
然后,按下按钮,保存起点的坐标(并保存到终点,目前相同)
在每个motion_notify_事件中,删除上一行(通过覆盖),并将其重新绘制到新的端点
最后,当按钮被释放时,该行是最终的
如果您使用画布小部件(例如,它负责大部分更新)会容易得多。您只需更新线条对象的坐标,它就会自动移动。此外,您还可以轻松删除线条。“算法”与上面类似:
- 将
按钮\按下\事件
、按钮\释放\事件
和运动\通知事件
连接到画布
- 当按下按钮时,创建一个
GooCanvas.polyline
对象,并设置开始和结束
- 在每个
motion\u notify\u事件上更新端点
- 使用
按钮\u释放\u事件完成
通过第一个链接,您应该能够执行步骤1和3。如果这还不够,请提供显示问题的信息。对于步骤2,您需要保存按下按钮的位置,然后处理鼠标任何移动的“运动通知事件”
。