分享

GTK:文本框文字编辑

 217小月月坑 2015-02-10

对文本框文字的插入和删除之前都需要得到当前buffer中开始位置、结束位置的ITER

我们可以用gtk_text_buffer_get_bounds来实现这一点。

      

1

名称:

gtk_text_buffer_get_bounds

功能

获得文本框的标签盒

头文件

#include <gtk/gtk.h>

函数原形

void gtk_text_buffer_get_bounds(GtkTextBuffer *buffer,GtkTextIter *start, GtkTextIter *end);

参数

buffer      文本构件的缓冲区

start       文本框文字开始位置的iter

end        文本框文字结束位置的iter

返回值

      

 

 

 

 

 

 

 

 

 

缓冲区开始和结束位置的iter分别通过starend参数得到。下面我们就可以对文本框构件的正文进行操作了。

 

2

名称:

gtk_text_buffer_insert

功能

向缓冲区插入文字

头文件

#include <gtk/gtk.h>

函数原形

void gtk_text_buffer_insert(GtkTextBuffer *buffer,GtkTextIter *iter,const gchar *text,gint len);

参数

buffer     文本构件的缓冲区

iter       插入的位置

text       插入的文本

len       插入的文本长度

返回值

      

 

 

 

 

 

 

 

 

 

 

startend分别为文本框文字开始位置和结束位置的iterlen为要插入文本的长度,它可以为-1,表示插入text的所有内容。

 

       下面是插入文字的程序例子:

#include <gtk/gtk.h>

 

GtkWidget *text_view;

GtkTextBuffer *buffer;

GtkTextIter *Iter;

 

void button_event(GtkWidget *widget,gpointer *data);

 

int main(int argc,char *argv[ ])

{

GtkWidget *window;

GtkWidget *button;

GtkWidget *box;

 

gtk_init(&argc,&argv);

window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

gtk_widget_set_size_request(window,200,150);

g_signal_connect(GTK_OBJECT(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL);

 

box=gtk_vbox_new(FALSE,0);

gtk_widget_show(box);

 

text_view=gtk_text_view_new();/*创建文本框构件*/

gtk_widget_set_request(text_view,200,120);

gtk_container_add(GTK_CONTAINER(window),box);

gtk_box_pack_start(GTK_BOX(box),text_view,FALSE,FALSE,0);

buffer=gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view));

gtk_widget_show(text_view);

 

button=gtk_button_new_with_label(“确定”);

gtk_box_pack_start(GTK_BOX(box),button,FALSE,FALSE,5);

gtk_signal_connect(GTK_OBJECT(button),”clicked”,GTK_SIGNAL_FUNC(button_event),NULL);

 

gtk_widget_show(window);

gtk_main();

}

 

void button_event(GtkWidget *widget,gpointer *data)

{

const gchar *text=”How are you!”;

GtkTextIter start,end;

 

gtk_text_buffer_get_bounds(GTK_TEXT_BUFFER(buffer),&start,&end);/*获得缓冲区开始和结束位置的Iter*/

gtk_text_buffer_insert(GTK_TEXT_BUFFER(buffer),&start,text,strlen(text));/*插入文本到缓冲区*/

}

 

程序运行后得到如下界面:

当用户点击确定按扭后得到:

3

名称:

gtk_text_buffer_delete

功能

缓冲区内容删除

头文件

#include <gtk/gtk.h>

函数原形

void gtk_text_buffer_delete(GtkTextBuffer *buffer,GtkTextIter *start,

GtkTextIter *end);

参数

buffer      文本构件的缓冲区

start       文本框文字开始位置的iter

end        文本框文字结束位置的iter

返回值

      

 

 

 

 

 

 

 

 

 

 

 

 gtk_text_buffer_delete函数可将缓冲区内容删除。startend分别为文本框文字开始位置和结束位置的iter.

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多