2011-01-26 80 views
4

嗯,我在GTK中做的一个小接口有问题。将GTK窗口小部件调整到C中的vbox中012

我有一些小部件放入一个盒子中,正好有三个小部件,我把它们放入一个带有gtk_box_pack_start的盒子中。 我用gtk_widget_set_size_request函数调整了这些小部件的大小,但似乎不起作用,因为小部件扩展到了vbox的总宽度,并且不考虑我在函数中修复的大小。

的一段代码,使这是:

enter = gtk_button_new(); 
gtk_button_set_image(GTK_BUTTON(enter), gtk_image_new_from_file("iconos/submit.png")); 
gtk_widget_set_size_request(enter, 195, 32); 

//User,pass 
login->user = gtk_entry_new(); 
login->passwd = gtk_entry_new(); 
gtk_widget_set_size_request(login->user, 195, 32); 
gtk_widget_set_size_request(login->passwd, 195, 32); 

gtk_box_pack_start(GTK_BOX(v_box), login->user, FALSE, FALSE, 10); 
gtk_box_pack_start(GTK_BOX(v_box), login->passwd, FALSE, FALSE, 0); 
gtk_box_pack_start(GTK_BOX(v_box), enter, FALSE, FALSE, 10); 

gtk_container_add(GTK_CONTAINER(window), v_box); 

如果我把这些小部件到对准,我没有问题,大小是固定的正确。

这是为什么?

回答

2

你想通过设置大小来实现什么?至于gtk_widget_set_size_request()的文件说,

注意任何固定大小设置的内在危险 - 主题,翻译成其他语言,不同的字体和用户动作都可以改变一个给定的插件的适当的大小。所以,硬编码的大小基本上不可能是正确的。

您可以设置一个小部件的大小要求,但那是不一样的设定大小;我们不能总是得到我们想要的东西,所以在某些情况下,小部件没有得到它所要求的大小。这是其中的一种情况。

GTK的设计使您不必为小部件设置固定尺寸。 (请参阅文档中的以上引用。)通常有更好的方法来实现你想要的。

在这种情况下,把你的按钮,在GtkHButtonBoxgtk_container_add,按钮盒包装到您的立式机箱,设置为FALSEexpandfill参数,当你做之前。

+0

嗨,对不起我的延迟答案。基本上,如果一个窗口小部件进入gtk_alignment,我可以调整这个窗口小部件的大小,但是如果它不在gtk_alignment中,例如放到vertical_box中,则gtk_widget_set_size_request不会起任何作用。 我不知道如果我解释正确,对不起。 – Leber 2011-02-12 02:17:04

相关问题