Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Button 在用“创建的对话框中居中按钮”;gtk_对话框带按钮的“新建”;_Button_User Interface_Dialog_Gtk_Alignment - Fatal编程技术网

Button 在用“创建的对话框中居中按钮”;gtk_对话框带按钮的“新建”;

Button 在用“创建的对话框中居中按钮”;gtk_对话框带按钮的“新建”;,button,user-interface,dialog,gtk,alignment,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_MO

我正在写一个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按钮,它们与弹出窗口的右端对齐,而我希望它们居中(如图所示)


有没有一种方法可以在不使用其他容器存储按钮的情况下执行此操作?

您可以将按钮对齐在中间

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


如果您想更改容器,您也可以,但这不是您想要的,关于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\u widget\u set\u halign
,它接受枚举:

gtk_widget_set_halign (gtk_dialog_get_action_area (dialog), GTK_ALIGN_CENTER);
编辑:我刚刚意识到,
gtk\u dialog\u get\u action\u区域
无论如何在gtk3中是不推荐的。。因此,应该找到不同的解决方案