所以,我正在努力实现以下目标:用户应该能够填写多个gtk_entry并点击Apply之后,点击后我希望Apply按钮发出信号,如下所示:
g_signal_connect(G_OBJECT(Apply),"clicked",G_CALLBACK(apply_clicked),#a argument#);
之后,apply_clicked()我希望保存输入的文本.
我的问题是:如何将这些传递gtk_entry给我的回调函数apply_clicked?如果它只是一个我只是设置它# an argument #,但我应该怎么做多个条目?
这样做的典型方法是:
g_object_set_data (context_object, "entry1", entry1);
g_object_set_data (context_object, "entry2", entry2);
g_signal_connect (G_OBJECT (Apply), "clicked", G_CALLBACK (apply_clicked), context_object);
Run Code Online (Sandbox Code Playgroud)
然后在apply_clicked中:
GtkEntry *entry1 = g_object_get_data (context_object, "entry1");
...
Run Code Online (Sandbox Code Playgroud)
通常context_object将是GtkDialog或这些小部件存在的任何内容.
或者,如果您继承GtkDialog,则可以执行以下操作:
struct _MyDialog {
GtkDialog parent_object;
GtkEntry *entry1;
GtkEntry *entry2;
...
};
Run Code Online (Sandbox Code Playgroud)
然后,在构建对话框时,只需设置entry1,2,3等...而且您不需要使用g_object_ [g,s] et_data()hack.
| 归档时间: |
|
| 查看次数: |
5628 次 |
| 最近记录: |