我有一个包含很多旋钮的顶层窗口。
实际上,用户选择他需要的对象数,按下按钮后,应用程序会提供一些操作。
通常我正在使用结构
typedef struct
{
.......
GtkWidget *widget;
.......
} _GUI;
包含通过gtk_builder_get_object()初始化的小部件。之后,我可以从他们那里获得信息。
但是在这里我需要覆盖很多(> 50)旋转按钮,我还需要设置它们的属性(例如设置敏感选项等)。
所以问题是可以列出顶层窗口的所有小部件(还有盒子和扩展器)并以某种方式按类型排序(GtkSpinButton,GtkWidget等)?
我想避免直接指向特定的旋钮。
答案 0 :(得分:2)
由于顶级窗口(GtkWindow)是GtkContainer的子类,因此您可以使用gtk_container_forall()
来迭代窗口的子窗口。
然后对于每个孩子,您可以使用GObject的API:s(例如G_OBJECT_TYPE()
macro宏)来计算每个孩子的类型。如果在窗口中的嵌套容器中有旋转按钮,则可能需要递归。