【问题标题】:Listing widgets in a GTK+ window在 GTK+ 窗口中列出小部件
【发布时间】:2013-02-19 14:15:12
【问题描述】:

我有一个包含许多旋转按钮的顶层窗口。

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

通常我使用的是结构体

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

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

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

所以问题是可以列出顶层窗口的所有小部件(也有框和扩展器)并以某种方式按它们的类型(GtkSpinButton、GtkWidget 等)对它们进行排序?

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

【问题讨论】:

    标签: c gtk


    【解决方案1】:

    由于顶级窗口(GtkWindow)是 GtkContainer 的子类,因此您可以使用 gtk_container_forall(),例如,遍历窗口的子级。

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

    【讨论】:

    • 对,只需使用gtk_container_foreach() 来避免迭代幽灵小部件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多