我想重新实现一组使用GLIBMM的C++ GLIB类。 其中大多数是bug,需要扩展很多,因为整个项目都是用C++完成的,所以在更正它之前,我首选移植代码。gblimm/gtkmm自定义属性
不幸的是,我不是GLIB的专家,即使我在官方文档上花费了很多天,我仍然在理解一些概念方面遇到麻烦,特别是在属性周围。
据我所知,属性是一个完整的替代(也许更多)的setter和getters。基本上,不是对每个属性使用专门的方法,而是为所有这些方法使用通用的set/get_property方法,使用名称(或ID)访问属性并使用像GValue这样的容器来保存多种类型的数据。
我能看到的唯一好处是能够访问包含在字符串中的名称的属性(可能来自配置文件),但我肯定错过了一些东西。此外,这在GLIB中似乎是正确的,但在Glib :: ObjectBase中并不是这样,它表示您应该更喜欢使用专用属性_(*)getter/setter而不是property_set/get_value。
阅读关于Glib :: Property的文档我不确定C++中完整的属性实现应该如何,我认为缺乏GLIB的经验会让它更难。
我想每个属性移动与性病属性get/set方法,但我不想做了很大的改动发现为时已晚,以前的计算策略是更好的时代:)
灿有人向我解释属性是什么(如果与C++类属性相比)?你能给我提供一个信号/插槽工作属性的例子吗?有人可以说明两种方式的优点吗?
谢谢!
感谢您的解释,我试图完成在C++中移植代码,但绑定的相关版本部分不完整,使其只是一团糟! – Gianks