将C中的gtk3与C ++中的gtkmm结合使用

问题描述

我当时正在考虑将现有项目从gtk3编写的C缓慢地转换为C ++。最初,我开始建立类,并使用extern "C"一次移动一个函数。但是,gtk拥有整个GObject系统,带有特殊的实例化和处理对象。 (具有大量动态创建的魔术宏。)

我开始用C ++为Gtk制作包装,但是我发现gtkmm已经存在。 gtk代码可以与gtkmm结合使用吗?信号和插槽是否可以在这两者之间工作,并且可以与c ++ gtkmm对象和c gtk“对象”很好地配合使用?

最坏的情况是我可以镜像对象并将其来回投射...并使用gtk在C中处理创建和删除操作,这样它不会破坏任何内容,但是最终我想将它们完全从C中拉出,我认为最后一点会很痛苦。

解决方法

所有Gtkmm小部件都有一个名为gobj()的方法,可为您提供小部件的C指针,以便您可以在其上调用C函数。 https://developer.gnome.org/gtkmm-tutorial/stable/sec-basics-gobj-and-wrap.html.en https://developer.gnome.org/gtkmm/stable/classGtk_1_1Widget.html

我猜gtk C回调与gtkmm回调兼容: https://developer.gnome.org/gtkmm-tutorial/stable/sec-connecting-signal-handlers.html.en

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...