是否可以将私有数据添加到GtkWidget?
背景:
我有很多GtkCheckBottons,所有这些小部件都连接到同一个回调.在回调中,我想处理小部件私有数据(或至少区分小部件).
例:
// checkbox signal callback
void on_checkbox_tcoggled(GtkWidget* widget, gpointer data) {
MyClass* me = data;
MyPrivateData* priv = widget->priv; // ???
MyClass_foo(me, priv);
}
Run Code Online (Sandbox Code Playgroud)
是否可以将私人数据添加到GtkWidget?
您可以使用的功能g_object_set_data和g_object_get_data任意数据添加到任何GObject.
MyPrivateData *priv = ...
g_object_set_data(G_OBJECT(widget), "my private data", priv);
// ...
void on_checkbox1_toggled(GtkWidget* widget, gpointer data) {
MyClass* me = data;
MyPrivateData* priv = (MyPrivateData*) g_object_get_data(G_OBJECT(widget), "my private data");
MyClass_foo(me, priv);
}
Run Code Online (Sandbox Code Playgroud)