2014-01-23 42 views
0

我是GTK +世界的新手,并试图从GTK +开发基础中学习它。使用GtkAlignment进行水平对齐

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

即使我改变了下面任何一个的值,我也没有得到Ok和Calcel按钮正确对齐。

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

我想我失去了一些东西,但没有得到确切

注:我使用GTK + 3在Windows 7

INT主(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; 

}从docs

回答

0

引用:

注意,所希望的效果可以在大多数情况下,通过使用 的 “halign”, “VALIGN” 和 “余量” 的属性来实现在子部件上,所以 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); 

,并删除所有对准部件

+0

因为我靠着GtkAlignment小部件,就是为什么我想知道为什么这是行不通的。但是,有很多替代方案。 – dearvivekkumar

+0

感谢您的回复 – dearvivekkumar