gtk+学习笔记(七)
今天被一个文本框坑了,基本设置什么的都对,但是就是无法显示中文,按钮名称都可以显示中文,先介绍下文本框的基本函数吧.
GtkWidget *gtk_text_view_new(void);新建一个文本框,gtk_text_view_new创建一个新的缓冲区,如果你没有在创建之前调用函数gtk_text_view_set_buffer来设置这个缓冲区,那么系统将创建一个空的默认的缓冲区,我们可以用gtk_text_view_get_buffer来得到这个缓冲区。如果你用你自己的缓冲区来创建文本框可以用gtk_text_view_new_with_buffer.
gtk_text_view_new_with_buffer用指定的缓冲区创建一个新的文本框,我们用buffer来指定这个缓冲区,一个缓冲区能够被许多的构件共享。buffer可以为NULL,功能和gtk_text_view_new函数一样。
可以用gtk_text_view_new创建默认缓冲区的文本框,用gtk_text_view_get_buffer来得到这个缓冲区。
gtk_text_buffer_insert(GtkTextBuffer *buffer, GtkTextIter *iter, const gchar *text ,gint len),向缓冲区插入文字。start,end分别为文本框文字开始位置和结束位置的iter,len是要插入文本的长度,可以是-1,表示插入text的所有内容.
gtk_text_buffer_get_text(GtkTextBuffer *buffer,const GtkTextIter *start,const GtkTextIter *end,gboolean include_hidden_chars)来获得文本框缓冲区的文本;
文本构件是一种动态重绘自身的构件 ,它会在 gtk_main( )函数之外重绘构件。这意味着文本构件内的所有变化都会立即生效。如果文本构件内的变化很多时,可能会引起闪烁。要在文本构件内的文本变化较大时不让构件 重绘,可以先“冻结”构件,临时停止动态重绘本身,等构件内的更新结束时,再将构件“解冻”。相关函数为:
gtk_text_freeze用来将构件“冻结”,停止其自动重绘,此时GtkText构件内显示的内容将不会被更新
gtk_text_thaw用来为构件“解冻”,使其恢复自动更新功能
gtk_entry_set_editable:设置编辑框是否可编辑
下面贴上可以实现的一段代码,(无法读取文件中的汉字)
text=gtk_text_new(NULL,NULL);
gtk_text_set_editable(GTK_TEXT(text),TRUE);
gtk_table_attach(GTK_TABLE(table),text,,,,,GTK_EXPAND | GTK_SHRINK | GTK_FILL,GTK_EXPAND | GTK_SHRINK | GTK_FILL,,);
gtk_widget_show(text);
/* 添加滚动条 */
vscrollbar=gtk_vscrollbar_new(GTK_TEXT(text)->vadj);
gtk_table_attach(GTK_TABLE(table),vscrollbar,,,,,GTK_FILL,GTK_EXPAND | GTK_SHRINK | GTK_FILL,,); gtk_widget_show(vscrollbar);
/* 取得系统颜色映射,将映射设置为红色 */
cmap=gdk_colormap_get_system();
color.red=0xffff;
color.green=;
color.blue=;
if(!gdk_color_alloc(cmap,&color))
{
g_error("could not allocate color\n");
} /*加载固定字体 */
fixed_font=gdk_font_load(",-misc-simsun");
/* 添加文本到框中 */
gtk_widget_realize(text);
/*冻结text构件,准备多行更新 */
gtk_text_freeze(GTK_TEXT(text));
/* Insert some colored text */
gtk_text_insert(GTK_TEXT(text),NULL,&text->style->black,NULL,"supports ",-);
gtk_text_insert(GTK_TEXT(text),NULL,&color,NULL,"colored ",-);
gtk_text_insert(GTK_TEXT(text),NULL,&text->style->black,NULL,"text and different ",-);
gtk_text_insert(GTK_TEXT(text),fixed_font,&text->style->black,NULL,"fonts\n\n ",-);
/* 加载文件到框中 */
infile=fopen("txt.txt","r");
if(infile)
{
char buffer[];
int nchars;
while()
{
nchars=fread(buffer,,,infile);
gtk_text_insert(GTK_TEXT(text),fixed_font,NULL,NULL,buffer,nchars);
if(nchars<)
break;
}
fclose(infile);
}
/* 将text构件解冻,让变化显示出来 */
gtk_text_thaw(GTK_TEXT(text));
不管有多少问题,都是要解决的,加油啊!
gtk+学习笔记(七)的更多相关文章
- (转)Qt Model/View 学习笔记 (七)——Delegate类
Qt Model/View 学习笔记 (七) Delegate 类 概念 与MVC模式不同,model/view结构没有用于与用户交互的完全独立的组件.一般来讲, view负责把数据展示 给用户,也 ...
- Learning ROS for Robotics Programming Second Edition学习笔记(七) indigo PCL xtion pro live
中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...
- Typescript 学习笔记七:泛型
中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...
- python3.4学习笔记(七) 学习网站博客推荐
python3.4学习笔记(七) 学习网站博客推荐 深入 Python 3http://sebug.net/paper/books/dive-into-python3/<深入 Python 3& ...
- Go语言学习笔记七: 函数
Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...
- iOS 学习笔记七 【博爱手把手教你使用2016年gitHub Mac客户端】
iOS 学习笔记七 [博爱手把手教你使用gitHub客户端] 第一步:首先下载git客户端 链接:https://desktop.github.com 第二步:fork 大神的代码[这里以我的代码为例 ...
- 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整
今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...
- Linux学习笔记(七) 查询系统
1.查看命令 (1)man 可以使用 man 命令名称 命令查看某个命令的详细用法,其显示的内容如下: NAME:命令名称 SYNOPSIS:语法 DESCRIPTION:说明 OPTIONS:选项 ...
- go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer)
目录 go微服务框架kratos学习笔记七(kratos warden 负载均衡 balancer) demo demo server demo client 池 dao service p2c ro ...
- Java IO学习笔记七:多路复用从单线程到多线程
作者:Grey 原文地址:Java IO学习笔记七:多路复用从单线程到多线程 在前面提到的多路复用的服务端代码中, 我们在处理读数据的同时,也处理了写事件: public void readHandl ...
随机推荐
- laravel mapSpread 例子
$collection = collect(range(1, 9)); $chunks = $collection->chunk(2); $labeld = $chunks->mapSpr ...
- web项目中配置文件的加载顺序
当一个项目启动时,首先是web.xml: 这里面的配置: 为什么要在web.xml中配置struts的过滤器? 因为一个web项目运行的时需要加载的,或者默认的部分配置都会在web.xml中配置,中间 ...
- python中高阶函数与装饰器(3)
>>> f = lambda x: x * x>>> f<function <lambda> at 0x101c6ef28> >> ...
- Hadoop生态圈-Hbase的API常见操作
Hadoop生态圈-Hbase的API常见操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.
- VS批处理命令使用
在项目开始生成或者生成完成后想做一些操作,比如去编译非解决方案下的的项目,完成编译后复制文件到某个文件夹之类的纠结需求. 1. 基本使用 预先生成事件命令行,可以在项目编译的过程中运行 后期生成事件命 ...
- 科学计算三维可视化---Traits属性的监听
Traits属性的监听 HasTraits对象所有Traits属性都自动支持监听功能,当每个Traits属性发生变化时,HasTraits对象会通知监听此属性的函数 两种监听模式 静态监听 动态监听 ...
- Centos7远程桌面 vnc/vnc-server的设置
Centos7与Centos6.x有了很大的不同. 为了给一台服务器装上远程桌面,走了不少弯路.写这篇博文,纯粹为了记录,以后如果遇到相同问题,可以追溯. 1.假定你的系统没有安装vnc的任何软件,那 ...
- 推荐一些我所用的firefox 附加组件。
firefox之所以强大,很大程度上是因为它有着超多的扩展组件,来实现许多有趣的功能.这几天把我装的firefox附加组件整理下,个人认为是一般上网常用或者可以说是必备的组件,o(∩_∩)o ,晒晒. ...
- 微服务深入浅出(10)-- Docker
概念 1.Docker引擎 一个运行在服务器上的后台进程 2.Docker客户端 分为两种:CLI和RestAPI,与Docker引擎交互 3.Docker镜像 类似于我们使用的光盘,将程序打包到Do ...
- nc使用笔记
netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据.通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它. 现内网中有两台机器:Mac: 192.168.1.109 Ka ...