好吧,我在使用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);
如果我将这些小部件放入对齐方式,我没有问题,大小是正确的。
为什么会这样?
答案 0 :(得分:2)
您希望通过设置尺寸来实现什么?正如gtk_widget_set_size_request()
的文档所说,
请注意,设置任何固定大小的固有危险 - 主题,翻译成其他语言,不同字体和用户操作都可以更改给定小部件的适当大小。因此,基本上不可能对始终正确的大小进行硬编码。
您可以设置小部件的请求大小,但这与设置大小不同;我们不能总是得到我们想要的东西,所以在某些情况下,小部件不会得到它要求的大小。这是其中一种情况。
GTK的设计使您不必为小部件设置固定大小。 (请参阅文档中的上述引用。)通常有更好的方法来实现您想要的。
在这种情况下,请将您的按钮放在GtkHButtonBox
gtk_container_add
,并将按钮框打包到垂直框中,并将expand
和fill
参数设置为FALSE
,正如您之前所做的那样。