好吧,我在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);
如果我将这些小部件放入对齐方式,我没有问题,大小是正确的.
为什么是这样?
最佳答案 你想通过设置大小来实现什么?正如gtk_widget_set_size_request()的文档所说,
Note the inherent danger of setting any fixed size – themes, translations into other languages, different fonts, and user action can all change the appropriate size for a given widget. So, it’s basically impossible to hardcode a size that will always be correct.
您可以设置窗口小部件的大小请求,但这与设置大小不同;我们不能总是得到我们想要的东西,所以在某些情况下,小部件不会得到它要求的大小.这是其中一个案例.
GTK的设计使您不必为小部件设置固定大小. (请参阅文档中的上述引用.)通常有更好的方法来实现您想要的.
在这种情况下,将您的按钮放在带有gtk_container_add的GtkHButtonBox中,然后将按钮框打包到垂直框中,将expand和fill参数设置为FALSE,就像之前一样.