我正在尝试编译并运行gtk+3
的示例,遗憾的是,该示例来自gtk + 2手册,我在gtk+3
上找不到任何有用的内容而我无法下载{ {1}}。
在这个例子中有几个这样的函数:
gtk+2
编译时出现此错误:
void entry_toggle_editable( GtkWidget *checkbutton,
GtkWidget *entry )
{
gtk_editable_set_editable(GTK_EDITABLE(entry),GTK_TOGGLE_BUTTON(checkbutton)->active);
}
我查看了所有手册。我能够找到以解决这个问题,我明白这可能是一个发布兼容性问题,但'GtkToggleButton {aka struct _GtkToggleButton}' has no member named 'active'
手册对于第一次接近Gtk的人来说真的没用。
答案 0 :(得分:0)
GTK + 2和GTK + 3之间最大的变化之一是GTK + 3摆脱了所有公共结构领域,用GObject属性取而代之。所以不要说
GTK_TOGGLE_BUTTON(checkbutton)->active
你说
gboolean active;
g_object_get(checkbutton, "active", &active, NULL);
(NULL
是因为g_object_get()
可以同时从同一个对象获取多个属性; NULL
说“这就是我通过此调用所需的全部内容”。)< / p>
GTK +还提供了添加类型检查的访问器方法,因此您也可以说
gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(checkbutton))
在可用时使用它们比直接调用g_object_get()
更好。
GTK +文档附带a tutorial。您可能已经意识到,您无法使用GTK + 2示例来学习GTK + 3而无需修改;你需要花更多的时间来寻找GTK + 3的例子。