四、Gtk4-Widgets (2)

文章展示了如何使用GTK4库创建一个简单的文本编辑器,通过GtkTextView进行文本显示和编辑,利用GtkTextBuffer存储文本内容,并通过添加GtkScrolledWindow解决窗口大小固定的问题,实现文本超出时的滚动功能。

1 GtkTextView,GtkTextBuffer and GtkScrolledWindow

GtkTextView and GtkTextBuffer

GtkTextView是一个用于多行文本编辑的构件。GtkTextBuffer是一个连接到GtkTextView的文本缓冲区。请参阅下面的示例程序tfv1.c。

 1 #include <gtk/gtk.h>
 2 
 3 static void
 4 app_activate (GApplication *app) {
   
   
 5   GtkWidget *win;
 6   GtkWidget *tv;
 7   GtkTextBuffer *tb;
 8   gchar *text;
 9 
10   text =
11       "Once upon a time, there was an old man who was called Taketori-no-Okina. "
12       "It is a japanese word that means a man whose work is making bamboo baskets.\n"
13       "One day, he went into a mountain and found a shining bamboo. "
14       "\"What a mysterious bamboo it is!,\" he said. "
15       "He cut it, then there was a small cute baby girl in it. "
16       "The girl was shining faintly. "
17       "He thought this baby girl is a gift from Heaven and took her home.\n"
18       "His wife was surprized at his story. "
19       "They were very happy because they had no children. "
20       ;
21   win = gtk_application_window_new (GTK_APPLICATION (app));
22   gtk_window_set_title (GTK_WINDOW (win), "Taketori");
23   gtk_window_set_default_size (GTK_WINDOW (win), 400, 300);
24 
25   tv = gtk_text_view_new (
在已确认 `libcanberra-gtk3-module` 和 `libcanberra-gtk-module` 为最新版本后,若仍出现 `Failed to load module "canberra-gtk-module"` 错误,可尝试以下解决方法: #### 检查库文件路径 有时候系统可能无法正确找到库文件,可通过更新动态链接库缓存来解决: ```bash sudo ldconfig ``` #### 检查 GTK 版本兼容性 部分应用可能对 GTK 版本有特定要求,若系统默认的 GTK 版本与应用所需版本不兼容,可能导致此错误。例如,Ubuntu 默认安装 GTK 3.0,而某些应用需要 GTK 2.0 版本,可安装 `gtk-2.0+` 版本的 `canberra`: ```bash sudo apt-get install libcanberra-gtk-module -y ``` #### 环境变量设置 可尝试设置 `GTK_MODULES` 环境变量,强制不加载 `canberra-gtk-module`: ```bash export GTK_MODULES="" ``` 若要永久生效,可将上述命令添加到 `~/.bashrc` 或 `~/.bash_profile` 文件中: ```bash echo 'export GTK_MODULES=""' >> ~/.bashrc source ~/.bashrc ``` #### 检查文件权限 确保 `libcanberra-gtk-module` 和 `libcanberra-gtk3-module` 文件具有正确的权限: ```bash sudo chmod 644 /usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libcanberra-gtk-module.so sudo chmod 644 /usr/lib/x86_64-linux-gnu/gtk-3.0/modules/libcanberra-gtk3-module.so ``` #### 清理并重新安装 可尝试卸载 `libcanberra-gtk-module` 和 `libcanberra-gtk3-module`,然后重新安装: ```bash sudo apt-get remove libcanberra-gtk-module libcanberra-gtk3-module sudo apt-get install libcanberra-gtk-module libcanberra-gtk3-module ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值