在GT中将GTK小部件调整为vbox

时间:2011-01-26 16:06:12

标签: c gtk

好吧,我在使用GTK做的小界面时遇到了问题。

我将一些小部件放入一个盒子中,正好是三个小部件,然后我将它们放入一个带有gtk_box_pack_start的vbox中。 我使用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);

如果我将这些小部件放入对齐方式,我没有问题,大小是正确的。

为什么会这样?

1 个答案:

答案 0 :(得分:2)

您希望通过设置尺寸来实现什么?正如gtk_widget_set_size_request()的文档所说,

  

请注意,设置任何固定大小的固有危险 - 主题,翻译成其他语言,不同字体和用户操作都可以更改给定小部件的适当大小。因此,基本上不可能对始终正确的大小进行硬编码。

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

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

在这种情况下,请将您的按钮放在GtkHButtonBox gtk_container_add,并将按钮框打包到垂直框中,并将expandfill参数设置为FALSE,正如您之前所做的那样。