'GtkToggleButton {aka struct _GtkTogglebutton}'没有成员'有效'

时间:2016-08-08 14:35:45

标签: c struct gtk

我正在尝试编译并运行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的人来说真的没用。

1 个答案:

答案 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的例子。