如何扩展 GTK window 在滚动的 window 中包含一个非常小的 GRID?
How to expand the GTK window containing a really tiny GRID inside a scrolled window?
我有一个包含 GRID 中 GTK 条目的代码,我的目标是将它们附加到 GRID 中以生成 table 值,类似于“电子表格”。条目在 GRID 中,GRID 在 GTK Scrolled window 中,它在主 window.
中
但是,我没有得到预期的结果。 GRID真的很小,可以展开。
这是我得到的(图片):
这是我想要的(图片):
这是我的代码:
#include <gtk/gtk.h>
int main(int argc, char **argv){
gtk_init(&argc, &argv);
GtkWidget *mainwindow;
mainwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(mainwindow), "Example");
g_signal_connect(mainwindow, "destroy", G_CALLBACK(gtk_main_quit), NULL);
int n = 5;
GtkWidget *entries[n][n];
GtkWidget *grid;
GtkWidget *scrolledwindow;
grid = gtk_grid_new();
gtk_grid_set_row_spacing(GTK_GRID(grid), 5);
gtk_grid_set_column_spacing(GTK_GRID(grid), 3);
scrolledwindow = gtk_scrolled_window_new(NULL, NULL);
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
entries[i][j] = gtk_entry_new();
gtk_grid_attach(GTK_GRID(grid), entries[i][j], i, j, 1, 1);
}
}
gtk_container_add(GTK_CONTAINER(scrolledwindow), grid);
gtk_container_add(GTK_CONTAINER(mainwindow), scrolledwindow);
gtk_widget_show_all(mainwindow);
gtk_main();
return 0;
}
在网上搜索,我发现了这个问题:
Gtk scroll window size in a grid,但它在 Python 中,我不知道,但是 NULL 和 NULL,我必须在这个命令中赋予 a 和 b 什么值:gtk_scrolled_window_new(a, b);
您可以使用 GtkScrolledWindow
中的 gtk_scrolled_window_set_propagate_natural_width
and gtk_scrolled_window_set_propagate_natural_height
函数。
例如,在您的代码段中:
// ...
scrolledwindow = gtk_scrolled_window_new(NULL, NULL);
// Use the child widget's natural dimensions when requesting the scrollwindow's
// own natural size:
gtk_scrolled_window_set_propagate_natural_width(GTK_SCROLLED_WINDOW(scrolledwindow), true);
gtk_scrolled_window_set_propagate_natural_height(GTK_SCROLLED_WINDOW(scrolledwindow), true);
for(int i = 0; i < n; i++){
// ...
我有一个包含 GRID 中 GTK 条目的代码,我的目标是将它们附加到 GRID 中以生成 table 值,类似于“电子表格”。条目在 GRID 中,GRID 在 GTK Scrolled window 中,它在主 window.
中但是,我没有得到预期的结果。 GRID真的很小,可以展开。
这是我得到的(图片):
这是我想要的(图片):
这是我的代码:
#include <gtk/gtk.h>
int main(int argc, char **argv){
gtk_init(&argc, &argv);
GtkWidget *mainwindow;
mainwindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(mainwindow), "Example");
g_signal_connect(mainwindow, "destroy", G_CALLBACK(gtk_main_quit), NULL);
int n = 5;
GtkWidget *entries[n][n];
GtkWidget *grid;
GtkWidget *scrolledwindow;
grid = gtk_grid_new();
gtk_grid_set_row_spacing(GTK_GRID(grid), 5);
gtk_grid_set_column_spacing(GTK_GRID(grid), 3);
scrolledwindow = gtk_scrolled_window_new(NULL, NULL);
for(int i = 0; i < n; i++){
for(int j = 0; j < n; j++){
entries[i][j] = gtk_entry_new();
gtk_grid_attach(GTK_GRID(grid), entries[i][j], i, j, 1, 1);
}
}
gtk_container_add(GTK_CONTAINER(scrolledwindow), grid);
gtk_container_add(GTK_CONTAINER(mainwindow), scrolledwindow);
gtk_widget_show_all(mainwindow);
gtk_main();
return 0;
}
在网上搜索,我发现了这个问题:
Gtk scroll window size in a grid,但它在 Python 中,我不知道,但是 NULL 和 NULL,我必须在这个命令中赋予 a 和 b 什么值:gtk_scrolled_window_new(a, b);
您可以使用 GtkScrolledWindow
中的 gtk_scrolled_window_set_propagate_natural_width
and gtk_scrolled_window_set_propagate_natural_height
函数。
例如,在您的代码段中:
// ...
scrolledwindow = gtk_scrolled_window_new(NULL, NULL);
// Use the child widget's natural dimensions when requesting the scrollwindow's
// own natural size:
gtk_scrolled_window_set_propagate_natural_width(GTK_SCROLLED_WINDOW(scrolledwindow), true);
gtk_scrolled_window_set_propagate_natural_height(GTK_SCROLLED_WINDOW(scrolledwindow), true);
for(int i = 0; i < n; i++){
// ...