在GTK +窗口中列出小部件

时间:2013-02-19 14:15:13

标签: c gtk

我有一个包含很多旋钮的顶层窗口。

实际上,用户选择他需要的对象数,按下按钮后,应用程序会提供一些操作。

通常我正在使用结构

typedef struct
{
.......
GtkWidget *widget;
.......
} _GUI;

包含通过gtk_builder_get_object()初始化的小部件。之后,我可以从他们那里获得信息。

但是在这里我需要覆盖很多(> 50)旋转按钮,我还需要设置它们的属性(例如设置敏感选项等)。

所以问题是可以列出顶层窗口的所有小部件(还有盒子和扩展器)并以某种方式按类型排序(GtkSpinButton,GtkWidget等)?

我想避免直接指向特定的旋钮。

1 个答案:

答案 0 :(得分:2)

由于顶级窗口(GtkWindow)是GtkContainer的子类,因此您可以使用gtk_container_forall()来迭代窗口的子窗口。

然后对于每个孩子,您可以使用GObject的API:s(例如G_OBJECT_TYPE() macro宏)来计算每个孩子的类型。如果在窗口中的嵌套容器中有旋转按钮,则可能需要递归。