使用" gtk_dialog_new_with_buttons"创建的对话框中的中心按钮

时间:2014-08-15 11:24:19

标签: button user-interface dialog gtk alignment

我正在写一个Gtk应用程序,我遇到麻烦的中心按钮。 我用这种方式创建了一个弹出窗口:

dialog = gtk_dialog_new_with_buttons ("Add element",
                                      GTK_WINDOW(gElems->window),
                                      GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_MODAL,
                                      "OK",
                                      GTK_RESPONSE_ACCEPT,
                                      "Cancel",
                                      GTK_RESPONSE_REJECT,
                                      NULL);

一切正常,除了OK和Cancel按钮,它们与弹出窗口的右端对齐,而我希望它们居中(如图所示)。

enter image description here

有没有办法在不使用额外容器存储按钮的情况下这样做?

2 个答案:

答案 0 :(得分:1)

您可以在中间对齐按钮

    buttons_container = gtk_dialog_get_action_area (dialog)
    g_object_set_property (G_OBJECT (buttons_container), "halign", GTK_ALIGN_CENTER)

并且瞧..... .....

如果你想更换容器,你也可以,但那不是你想要的,真的

答案 1 :(得分:0)

关于luciomrx答案:需要传递一个gvalue,否则您将收到编译警告和运行时崩溃:

GValue val = G_VALUE_INIT;
g_value_init (&val, G_TYPE_ENUM);
g_value_set_enum (&val, GTK_ALIGN_CENTER);
buttons_container = gtk_dialog_get_action_area (dialog);
g_object_set_property (G_OBJECT (gtk_dialog_get_action_area (dialog)), "halign", &val);

甚至更简单,您也可以只使用gtk_widget_set_halign,它接受​​一个枚举:

gtk_widget_set_halign (gtk_dialog_get_action_area (dialog), GTK_ALIGN_CENTER);

编辑:我刚刚意识到gtk_dialog_get_action_area无论如何在gtk3中已被弃用..因此应该找到不同的解决方案。