我有一个自定义的GTK +小部件,我在C ++文件(而不是C)中编译。大多数代码是C ++的C子集。该应用程序似乎运行良好。 (现在它只显示一个包含小部件的顶级窗口。)但是,我在小部件结构中包含了一个析构函数,并注意到析构函数从未被调用。
答案 0 :(得分:1)
GTK使用面向对象的C,其中面向对象的部分使用函数指针可视化。因此,如果您可以使用gtk小部件的C端代码缓存此指针,则here is more info ...
如果您的时间不够用,请查看this example ...在此示例中查找 gtk_cpu_destroy ,以下代码在窗口小部件中设置函数指针。
object_class->destroy = gtk_cpu_destroy;
在gtkmm旁边,还存在gfc project,我觉得它更干净,更容易理解......
在C ++中实现GTK +小部件时,我应该注意哪些其他后果?
我的查询是你的自定义小部件是否真的是gtk小部件或gdk小部件......并非gdk的所有事件都是在gtkmm中处理的(或者至少他们在2009年没有回来),因此请注意你的应用程序可能会经常崩溃,如果您的小部件广泛使用gdk,并且没有捕获gdk事件。像systemtap这样的工具可能会帮助您捕获导致问题的事件。