You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GTK(C语言)的Fixed容器中固定TextView组件尺寸?

解决GTK-3 C语言固定TextView尺寸并支持滚动的问题

核心方案

你需要两个关键操作:

  • 用gtk_widget_set_size_request()固定TextView(或其包裹容器)的尺寸,这个函数是所有GtkWidget子类通用的,TextView继承自GtkWidget,完全可以使用。
  • 将TextView放到GtkScrolledWindow容器中,再把ScrolledWindow添加到Fixed容器里,这样文本超出固定尺寸时会自动出现滚动条。

具体代码示例

// 假设你已经创建了主窗口和Fixed容器(fixed_container)
GtkWidget *scrolled_win = gtk_scrolled_window_new(NULL, NULL);
// 直接给滚动容器设置固定尺寸,内部TextView会填充该空间
gtk_widget_set_size_request(scrolled_win, 400, 300);

GtkWidget *text_view = gtk_text_view_new();
// 也可以给TextView单独设置尺寸,滚动容器会适配它的大小(二选一即可)
// gtk_widget_set_size_request(text_view, 400, 300);

// 将TextView添加到滚动容器
gtk_container_add(GTK_CONTAINER(scrolled_win), text_view);
// 把滚动容器放到Fixed容器的指定坐标位置
gtk_fixed_put(GTK_FIXED(fixed_container), scrolled_win, 100, 100);

// 显示滚动容器及内部控件
gtk_widget_show_all(scrolled_win);

关键说明

  1. gtk_widget_set_size_request()的使用:
    这个函数属于GtkWidget基类,所有GTK控件(包括TextView、Button等)都继承支持,参数为宽度和高度(单位像素)。设置后控件会保持该最小尺寸,不会随内部文本内容自动扩大。

  2. 必须使用ScrolledWindow:
    直接将TextView放入Fixed容器,即使固定尺寸,超出的文本会被截断无法访问。用ScrolledWindow包裹后,当文本长度/行数超过TextView显示区域,滚动条会自动激活,允许用户滚动查看全部内容。

  3. 尺寸设置的灵活选择:

    • 给ScrolledWindow设置size_request:滚动容器自身固定大小,TextView填充其内部空间。
    • 给TextView设置size_request:TextView固定大小,ScrolledWindow适配它的尺寸(此时滚动容器不会无限制扩大)。

内容的提问来源于stack exchange,提问作者Shobhit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:22:16