如何初始化GtkScrolledWindow以通过尽可能多的增长来避免滚动条?
默认情况下,它似乎尽可能地小。
演示代码(用SIGINT退出):
#include <gtk/gtk.h>
int main(int argc, char *argv[]) {
GtkWidget* window;
GtkWidget* content;
GtkWidget* sw;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
sw = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add(GTK_CONTAINER(window), sw);
gtk_widget_show(sw);
content = gtk_button_new_with_label("This is a very, very"
"very very very very very very very very long text");
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), content);
gtk_widget_show(content);
gtk_widget_show(window);
gtk_main();
return 0;
}发布于 2009-03-03 06:41:00
我认为这两种方法都有效,而且并不是一个丑陋的技巧:
int main(int argc, char *argv[]) {
GtkWidget* window;
GtkWidget* content;
GtkWidget* sw;
GtkRequisition size;
GtkWidget* viewport;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
sw = gtk_scrolled_window_new(NULL, NULL);
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_container_add(GTK_CONTAINER(window), sw);
gtk_widget_show(sw);
content = gtk_button_new_with_label("This is a very, very"
"very very very very very very very very long text");
gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), content);
gtk_widget_show(content);
gtk_widget_show(window);
viewport = gtk_widget_get_ancestor(content, GTK_TYPE_VIEWPORT);
gtk_widget_size_request(viewport, &size);
gtk_widget_set_size_request(sw, size.width, size.height);
gtk_main();
return 0;
}发布于 2009-01-15 09:39:05
我不确定这样做的正确方法是什么,但我发现对我来说最有效的方法是设置窗口的大小,而窗口中包含的小部件通常会正确地调整自身的大小:
gtk_window_set_default_size(GTK_WINDOW(window), 1000, 500);或者,您可以设置GtkScrolledWindow的大小:
gtk_widget_set_size_request(window, 500, 250);请注意,特别是在最后一种情况下,在以像素为单位计算大小时,可能必须考虑本地化、字体大小和其他此类细节。
https://stackoverflow.com/questions/444085
复制相似问题