通过使用 Gtk::Builder
的 get_widget
函数,可以很简单地为任何小部件获取 Glib::RefPtr
,但是当在获取其他对象时,相应的 get_object
函数返回 Glib::Object
,不容易转换为所需的类(例如 Gtk::TreeView
).
这样做的合适方法是什么?
最佳答案
最好使用Glib::RefPtr<TheDerivedype>::cast_dynamic(object)
.
但是,Gtk::TreeView(您在问题中提到的)是一个 Gtk::Widget,因此您将使用 get_widget() 而不是 get_object()。
如果你的意思是,Gtk::TreeModel,好吧,在 Glade 中定义 GtkTreeModels,用于 gtkmm C++ 代码,这可能是可行的,因为我们最近在 gtkmm 中添加了一些修复: https://bugzilla.gnome.org/show_bug.cgi?id=742637
但这不是我们通常期望的工作 - 许多 C++ 开发人员更喜欢在代码中完全定义 DataModel 结构的静态类型安全,而不依赖于 C 和 C++ 类型之间的转换。例如:https://developer.gnome.org/gtkmm-tutorial/stable/sec-treeview-model.html.en#treeview-model-liststore
关于c++ - 如何使用 Gtk::Builder 将正确的 Glib::RefPtr 存储到非小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31230339/