我在 Gtk+ 教程和参考资料中磕磕绊绊,试图了解如何完成一个体面的布局。文档说您应该使用GtkGrid
而不是已弃用的Box/HBox/VBox,但是我无法将其GtkGrid
扩展到完整的窗口大小。使用gtk_widget_set_hexpand
完全没有影响GtkGrid
。
这个答案建议 “查看expand
属性”,但我找不到有关此属性实际是什么以及如何设置它们的信息(我只是假设每个属性总是有一个 getter/setter 对,但在这种情况下没有gtk_widget_set_expand
功能)。
我错过了什么?
更新:
设置扩展属性仍然不起作用 - 按钮“粘”在窗口的左上角。这是代码:
static void initializeGui() {
GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Blabla");
gtk_window_set_default_size(GTK_WINDOW(window), 800, 500);
gtk_window_set_hide_titlebar_when_maximized(GTK_WINDOW(window), TRUE);
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
g_signal_connect(window, "delete-event", G_CALLBACK(onWindowDelete), NULL);
g_signal_connect(window, "destroy", G_CALLBACK(onWindowDestroy), NULL);
GtkWidget *mainbox = gtk_grid_new();
g_object_set(G_OBJECT(mainbox), "expand", TRUE, NULL);
GtkWidget *button = gtk_button_new_with_label("Short button");
g_signal_connect(button, "clicked", G_CALLBACK(onButtonClick), NULL);
gtk_grid_attach(GTK_GRID(mainbox), button, 0, 0, 1, 1);
button = gtk_button_new_with_label("Very very long button");
gtk_grid_attach(GTK_GRID(mainbox), button, 1, 0, 1, 1);
button = gtk_button_new_with_label("Tiny btn");
gtk_widget_set_halign(button, GTK_ALIGN_END);
gtk_grid_attach(GTK_GRID(mainbox), button, 1, 1, 1, 1);
gtk_container_add(GTK_CONTAINER(window), mainbox);
gtk_widget_show_all(window);
}