c++ - 如何使用 Gtk::Builder 将正确的 Glib::RefPtr 存储到非小部件

标签 c++ gtkmm

通过使用 Gtk::Builderget_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/

相关文章:

c++ - (signed) long long 的真正下限是多少?

c++ - 检测浮点软件仿真

c++ - 未定义/未指定/实现定义的行为警告?

linux - Raspberry Pi 的 Eclipse gtkmm 交叉编译,找不到文件 ft2build.h,即使它确实存在

c++ - GTKMM - 为某些宽度绘制图像时出错

c++ - 将信息读入结构数组 C++

c++ - 前后增量

c++ - 使用 gtkmm 构建的 Glade TreeView

c++ - 适合初学者的 GTKmm 书籍?我需要在学习 GTKmm 之前学习 GTK+ 吗?

c++ - 在构造函数中访问容器子部件尺寸