Onway

我是一只菜菜菜菜鸟...
posts - 61, comments - 56, trackbacks - 0, articles - 34

gtk+笔记(1)

Posted on 2011-11-22 11:47 Onway 阅读(1433) 评论(0)  编辑 收藏 引用 所属分类: 使用说明
历时五六个小时,又是百度谷歌,帮助手册,入门教程什么一通查找,说是模块其实也就一个文件不到两百行代码。
比想象中要顺利,也学到了不少。

1,带有滚动条的多行文本框
只要gtk_scrolled_window_new生成一个滚动窗口,在其上加上textview控件即可gtk_container_add,特点是当textview足够显示的时候,滚动条不可见,否则自动产生(垂直和横向),而且也随着输入一起下滚显示。这个暂不知道怎么设置。
GtkWidget *scroll = gtk_scrolled_window_new(NULL,NULL);
GtkWidget *textview = gtk_text_view_new();
gtk_container_add(GTK_CONTAINER(scroll),textview);

textview总是要与一个textbuffer关联:
GtkTextBuffer *buffer = gtk_text_buffer_new(NULL);
buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview));


2,控件焦点设置
gtk_widget_grab_focus,当entry控件使用时,会选中控件内输入。

3,局部快捷键设置
GtkAccelGroup *group = gtk_accel_group_new();快捷键组?
gtk_window_add_accel_group(GTK_WINDOW(window),group);添加快捷键组到窗体
gtk_widget_add_accelerator(butQuery,"clicked",group,GDK_KEY_Return,(GdkModifierType)0,GTK_ACCEL_VISIBLE);快捷键注册,其实就是当快捷键按下的时候,为控件触发一个信号
(GdkModifierType)0为不使用修饰键

4,从glade文件添加控件,该控件是已经生成了的,只需用个指针接受对象
GtkBuilder *builder;
builder = gtk_builder_new();
gtk_builder_add_from_file(builder,"youdao.glade",NULL);
window = GTK_WIDGET(gtk_builder_get_object(builder,"window"));
。。。
g_object_unref(G_OBJECT(builder));撤销关联?

5,选项卡控件(称为notebook控件)
特点:notebook控件作为一个容器,每一个标签页用一个widget作为其标签名,一个widget作为其标签内容
添加一个标签页:gtk_notebook_append_page
注意:不能删掉一个notebook控件的所有标签页(显示的时候没效果)
标签页的序号(使用gtk_notebook_get_nth_page获得):
动态增减标签页的时候,标签页的序号似乎工作不正常。
最后使用的办法是,使用gtk_noteboo_prepend_page向前添加,再使用-1参数gtk_notebook_remove_page从后逐个删掉以替换掉之前的标签页。
应该有更好的方法吧?
删掉一个标签页的时候,使用gtk_widget_queue_draw(GTK_WIDGET(noteBook));重画控件,不太明白。

6,消息对话框(message dialog)
int ret;
GtkWidget *dialog;
dialog = gtk_message_dialog_new(GTK_WINDOW(window),
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_WARNING,
GTK_BUTTONS_OK,
"%s",msg);
gtk_window_set_title(GTK_WINDOW(dialog),"Warning");
ret = gtk_dialog_run(GTK_DIALOG(dialog));
gtk_widget_destroy(dialog);
特点:在gtk_dialog_run函数里堵塞,直到用户关掉了对话框才返回,其返回值暂没研究。


明天就可以开始感觉最具难度的html解析模块的设计编写了。
键盘昨晚吃了点八宝粥,有几个键特别蛋疼的按了一天。
2011-11-15

7,关于.glade文件(2011-11-18)
今天才发现原因.glade文件是程序运行的时候才载入的。那是一个XML文件。
使用这个界面设计器还要装上一个libglade2-0的库。


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理