c - 是否可以将私有(private)数据添加到 GtkWidget?

标签 c gtk gtk2

是否可以将私有(private)数据添加到GtkWidget

背景:

我有很多 GtkCheckBotton,所有这些小部件都连接到同一个回调。在回调中,我想处理小部件私有(private)数据(或至少区分小部件)。

示例:

// checkbox signal callback
void on_checkbox_tcoggled(GtkWidget* widget, gpointer data) {
    MyClass* me = data;
    MyPrivateData* priv = widget->priv;  // ???

    MyClass_foo(me, priv);
}

最佳答案

Is it possible to add private data to a GtkWidget?

您可以使用函数 g_object_set_datag_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);
}

关于c - 是否可以将私有(private)数据添加到 GtkWidget?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36452200/

相关文章:

c - 标准 C 函数的线程安全版本 'localtime'

通过不同的宏调用收集函数指针和其他辅助数据的列表

linux - 如何设置QTWEBKIT_PLUGIN_PATH

gtk - 与例如 GtkToolbar 相比,GtkToolbar 的优点/用途是什么?一个GtkHBox?

c++ - 是否可以设置 ScrollWindow 的颜色?

C Linux 警告 : assignment makes integer from pointer without a cast

java - 与本地编译语言相比,使用虚拟机编译(例如 JVM)有什么优势?

rust - 第二个 gtk_main_quit() 不工作

callback - 如何 : Idiomatic Rust for callbacks with gtk (rust-gnome)

c++ - GTKCellRendererToggle 在 GTKTreeView 中