我无法调整GTK水平框中的任何条目栏的大小。我不知道hbox或条目中的错误在哪里都不允许我调整它。
我使用了这个gtk_widget_size_request
函数,但它不起作用。
这就是为什么我认为hbox是原因。
int main(int argc,char* argv[])
{
GtkWidget *window;
GtkWidget *vbox;
GtkWidget *TreeView;
GtkWidget *title;
GtkWidget *hbox1;
GtkWidget *entry1;
GtkWidget *entry2;
GtkWidget *entry3;
GtkWidget *hbox2;
GtkWidget *btn1;
GtkWidget *btn2;
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window),"hellow world");
g_signal_connect(window,"delete-event",G_CALLBACK(gtk_main_quit),NULL);
gtk_widget_set_size_request(window,500,690);
gtk_container_set_border_width(GTK_CONTAINER(window), 15);
gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
TreeView= gtk_tree_view_new();
entry1= gtk_entry_new(); //this is the entry
entry2= gtk_entry_new();
entry3= gtk_entry_new();
btn1= gtk_button_new_with_label("add");
btn2= gtk_button_new_with_label("remove");
hbox1= gtk_hbox_new(0, 3); //this is the hbox
hbox2= gtk_hbox_new(0, 3);
gtk_box_pack_start(GTK_BOX(hbox1), entry1, FALSE, TRUE, 3);
gtk_box_pack_start(GTK_BOX(hbox1), entry2, FALSE, TRUE, 3);
gtk_box_pack_start(GTK_BOX(hbox1), entry3, FALSE, TRUE, 3);
gtk_box_pack_start(GTK_BOX(hbox2), btn1, FALSE, TRUE, 3);
gtk_box_pack_start(GTK_BOX(hbox2), btn2, FALSE, TRUE, 3);
vbox= gtk_vbox_new(0,3);
gtk_box_pack_start(GTK_BOX(vbox), TreeView, 1, 1, 0);
gtk_box_pack_start (GTK_BOX (vbox), hbox1,FALSE, TRUE, 3);
gtk_box_pack_start (GTK_BOX (vbox), hbox2, FALSE, TRUE, 3);
gtk_container_add(GTK_CONTAINER(window), vbox);
gtk_widget_show_all(window);
gtk_main();
}
答案 0 :(得分:0)
只需删除此行:
gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
这将有效。您也可以使用gtk_widget_set default_size
代替您目前拥有的内容。
问题是将窗口设置为不可调整大小并设置大小请求相互矛盾。
答案 1 :(得分:0)
如上所述,首先,删除gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
以允许GtkWindow调整大小。另请注意,由于使用gtk_widget_set_size_request
,您的窗口在调整大小时不会小于500x690。
然后,您没有解释是否要扩展所有三个条目或只是一个或哪个组合。要允许条目展开,您需要将展开标记设置为TRUE
而不是FALSE
。现在你有:
gtk_box_pack_start(GTK_BOX(hbox1), entry1, FALSE, TRUE, 3);
gtk_box_pack_start(GTK_BOX(hbox1), entry2, FALSE, TRUE, 3);
gtk_box_pack_start(GTK_BOX(hbox1), entry3, FALSE, TRUE, 3);
如果您希望扩展所有条目,请将标记设置为TRUE
:
gtk_box_pack_start(GTK_BOX(hbox1), entry1, TRUE, TRUE, 3);
gtk_box_pack_start(GTK_BOX(hbox1), entry2, TRUE, TRUE, 3);
gtk_box_pack_start(GTK_BOX(hbox1), entry3, TRUE, TRUE, 3);
如果您只想展开最后一个,请将前两个保留为FALSE
,将最后一个保留为TRUE
void gtk_box_pack_start(GtkBox * box, GtkWidget *孩子, gboolean expand, gboolean fill, guint padding);
...
展开
如果要为新孩子分配给盒子的额外空间,则为TRUE。 额外的空间将在所有使用的孩子之间平均分配 这个选项
...