我正在使用C++和GTK3开发一个应用程序,但是遇到了困难。我使用glade创建了一个可视化应用程序,其中有三列,其中一个是中间的DrawingArea。在那个DrawingArea中,我想在按下按钮后在想要的位置绘制一些圆,并在这些圆上具有不同的鼠标事件(如拖放、双击、右键单击...)。我已经完成了第一件事(按下按钮后绘制一个圆),按照官方文档,但问题是我不知道如何处理鼠标事件,但我考虑了一些不同的解决方案(我不知道它们是否是最好的解决方案,或者可能有更好的解决方案):
谢谢你的帮助 :)
我认为最好的方法是创建一个信号到cairomm上下文,但我没有看到任何可以这样做的东西。也许方法是创建一个cairo表面或类似的东西。
每次我点击创建一个圆圈时,我需要创建一个gtk小部件来处理鼠标事件。问题在于小部件需要具有圆形形状并且可绘制。是否可能创建一个圆形DrawingArea?那可能是最好的。我看到了创建自定义小部件的方法here。
使用goocanvasmm。问题在于goocanvasmm文档很少(由于我的声望,我不能发布超过两个链接),我认为这不是最好的解决方案,我更喜欢使用cairomm。
这个应用程序是使用GTK2和C编写的,圆圈是使用gnomecanvas绘制的,很容易地向每个圆圈添加信号;现在我正在将这个应用程序移植到C++和GTK3以进行更新。
我对GTK(和图形界面一般)非常陌生,但我已经寻找了几个小时的解决方案,不知道继续工作的最佳方法是什么。谢谢你的帮助 :)