如何防止 GtkWindow 增长?
How to prevent GtkWindow growing?
这是我的代码:
#include<gtk/gtk.h>
int main(int argc,char**argv)
{
GtkWidget* window, *button, *grid;
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window),100,100);
g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
//gtk_container_set_border_width(GTK_CONTAINER(window),10);
gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
grid = gtk_grid_new();
button = gtk_button_new_with_label("1");
gtk_grid_attach(GTK_GRID(grid), button, 0,0, 100, 1);
gtk_grid_set_column_homogeneous(GTK_GRID(grid), TRUE);
gtk_grid_set_row_homogeneous(GTK_GRID(grid), TRUE);
button = gtk_button_new_with_label("1");
gtk_grid_attach(GTK_GRID(grid), button,0, 1, 10, 1);
gtk_container_add(GTK_CONTAINER(window), grid);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
这段代码的结果是:
gtk_grid_attach(GTK_GRID(grid), button,0, 1, 100, 1)
当我将 gtk_grid_attach(GTK_GRID(grid), button,0, 1, 100, 1) 更改为 gtk_grid_attach(GTK_GRID(grid), button ,0, 1, 200, 1)
那么这段代码的结果是:
gtk_grid_attach(GTK_GRID(grid), button,0, 1, 200, 1)
为什么window的宽度变大了?我发现 window 的大小可能会随着函数 gtk_grid_attach() 的变化而变化。那么如何解决呢?
Why does the width of window increase?
您已使用
gtk_grid_set_column_homogeneous(GTK_GRID(grid), TRUE);
gtk_grid_set_row_homogeneous(GTK_GRID(grid), TRUE);
这意味着网格中的每个单元格将具有相等的宽度和高度,这将与嵌入的最大小部件相同。所以如果你有更多的单元格,网格将进一步增长,因此 window 宽度增加
I find that the size of window may be varied with the function gtk_grid_attach(). So how to solve it?
我不知道你的用例是什么。但是您可以取消设置同类属性 and/or 在附加子项时使用真实的网格宽度和高度。
这是我的代码:
#include<gtk/gtk.h>
int main(int argc,char**argv)
{
GtkWidget* window, *button, *grid;
gtk_init(&argc,&argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window),100,100);
g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
//gtk_container_set_border_width(GTK_CONTAINER(window),10);
gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
grid = gtk_grid_new();
button = gtk_button_new_with_label("1");
gtk_grid_attach(GTK_GRID(grid), button, 0,0, 100, 1);
gtk_grid_set_column_homogeneous(GTK_GRID(grid), TRUE);
gtk_grid_set_row_homogeneous(GTK_GRID(grid), TRUE);
button = gtk_button_new_with_label("1");
gtk_grid_attach(GTK_GRID(grid), button,0, 1, 10, 1);
gtk_container_add(GTK_CONTAINER(window), grid);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
这段代码的结果是: gtk_grid_attach(GTK_GRID(grid), button,0, 1, 100, 1)
当我将 gtk_grid_attach(GTK_GRID(grid), button,0, 1, 100, 1) 更改为 gtk_grid_attach(GTK_GRID(grid), button ,0, 1, 200, 1) 那么这段代码的结果是: gtk_grid_attach(GTK_GRID(grid), button,0, 1, 200, 1)
为什么window的宽度变大了?我发现 window 的大小可能会随着函数 gtk_grid_attach() 的变化而变化。那么如何解决呢?
Why does the width of window increase?
您已使用
gtk_grid_set_column_homogeneous(GTK_GRID(grid), TRUE);
gtk_grid_set_row_homogeneous(GTK_GRID(grid), TRUE);
这意味着网格中的每个单元格将具有相等的宽度和高度,这将与嵌入的最大小部件相同。所以如果你有更多的单元格,网格将进一步增长,因此 window 宽度增加
I find that the size of window may be varied with the function gtk_grid_attach(). So how to solve it?
我不知道你的用例是什么。但是您可以取消设置同类属性 and/or 在附加子项时使用真实的网格宽度和高度。