我正在写一个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按钮,它们与弹出窗口的右端对齐,而我希望它们居中(如图所示)。
有没有办法在不使用额外容器存储按钮的情况下这样做?
答案 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中已被弃用..因此应该找到不同的解决方案。