首页 文章

使用GtkAlignment进行水平对齐

提问于
浏览
0

我是GTK世界的新手,并试图从GTK开发基础中学习它 .

这意味着我在使用GtkAlignment小部件时遇到了一些问题,如下面的代码所示 .

即使我更改了下面任何一个的值,我也没有让Ok和calcel按钮正确对齐 .

GtkWidget* halign = gtk_alignment_new(0, 0, 0, 0);
GtkWidget* halign = gtk_alignment_new(0, 1, 0, 0);

我想我错过了什么,但没有得到确切的答案

注意:我在Windows 7上使用GTK 3

int main(int argc,char * argv []){gtk_init(&argc,&argv);

GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Gtk Alignment Sample");
gtk_container_set_border_width(GTK_CONTAINER(window), 5);
gtk_widget_set_size_request(window, 250, 400);
g_signal_connect(window, "delete_event", G_CALLBACK(gtk_main_quit), NULL);


GtkWidget* ok_button = gtk_button_new_from_stock(GTK_STOCK_OK);
GtkWidget* cancel_button = gtk_button_new_from_stock(GTK_STOCK_CANCEL);

GtkWidget* hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
gtk_box_pack_start(GTK_BOX(hbox), ok_button,     FALSE, FALSE, 0);
gtk_box_pack_start(GTK_BOX(hbox), cancel_button, FALSE, FALSE, 0);

GtkWidget* halign = gtk_alignment_new(0, 0, 0, 0);
gtk_container_add(GTK_CONTAINER(halign), hbox);

GtkWidget* vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_box_pack_start(GTK_BOX(vbox), halign, FALSE, FALSE, 0);

GtkWidget* valign = gtk_alignment_new(0, 1, 0, 0);
gtk_container_add(GTK_CONTAINER(valign), vbox);

gtk_container_add(GTK_CONTAINER(window), valign);
gtk_widget_show_all(window);

gtk_main();
return 0;

}

1 回答

  • 0

    引自docs

    请注意,在大多数情况下,通过在子窗口小部件上使用“halign”,“valign”和“margin”属性可以实现所需的效果,因此不应在新代码中使用GtkAlignment .

    尽量使用

    gtk_widget_set_alignment (button_ok, GTK_ALIGN_END);
    gtk_widget_set_alignment (button_cancel, GTK_ALIGN_END);
    //or
    gtk_widget_set_alignment (hbox, GTK_ALIGN_END);
    

    并删除所有对齐小部件

相关问题