linux系统应用与开发教程 教学课件 邝颖杰 ch10

上传人:繁星 文档编号:88252323 上传时间:2019-04-22 格式:PPT 页数:42 大小:1.33MB
返回 下载 相关 举报
linux系统应用与开发教程 教学课件 邝颖杰 ch10_第1页
第1页 / 共42页
linux系统应用与开发教程 教学课件 邝颖杰 ch10_第2页
第2页 / 共42页
linux系统应用与开发教程 教学课件 邝颖杰 ch10_第3页
第3页 / 共42页
linux系统应用与开发教程 教学课件 邝颖杰 ch10_第4页
第4页 / 共42页
linux系统应用与开发教程 教学课件 邝颖杰 ch10_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《linux系统应用与开发教程 教学课件 邝颖杰 ch10》由会员分享,可在线阅读,更多相关《linux系统应用与开发教程 教学课件 邝颖杰 ch10(42页珍藏版)》请在金锄头文库上搜索。

1、在线教务辅导网:http:/,教材其余课件及动画素材请查阅在线教务辅导网,QQ:349134187 或者直接输入下面地址:,http:/,Linux 系统应用与程序设计,X窗口,X服务器 运行在用户的本地机器上,在屏幕上完成低层的绘图操作 X客户端 是以X窗口系统作为GUI的任何程序,它等候X服务器传送的用户事件,然后通过给X服务器发送重绘消息来响应 X协议 X服务器和X客户端之间的通讯协议 Xlib库 是X客户端间接用于产生X协议消息的库,它提供一个非常底层的API、允许客户端在X服务器上绘出非常基本的元素,X工具包,X工具是一个GUI库,X客户端用它极大地简化了窗口、菜单、按钮等的创建 其

2、他平台无关的窗口API JAVA语言使用swing和AWT API来支持GUI程序设计 Tcl/Tk脚本语言,Gtk的作用,Gtk+工具包在XWindows中的作用 是Xlib之上更高层的开发工具包,它们将底层的Xlib的API进行封装,提供更高级的接口,达到降低开发难度,提高开发效率的目的。,Gtk简介,来源: Gimp(GUN Image Manipulation Program) 以Gtk+为基础的应用软件 Gimp Glade Gnome Abiword dia等 Gtk的主要组成 Glib:底层核心库 Pango:界面布局和国际化 Atk:其它功能,简而言之,GTK+一个库,它提供一

3、组已制作好的称作“窗口部件”的组件,我们通过简单易用的函数调用把这些组件和应用程序逻辑组合在一起,从而极大地简化了GUI的创建 GTK+完全是用c语言写,因此大多数GTK+软件也用c语言写,GTK+程序运行环境,检查GTK+和GNOME在系统中的版本和配置情况 pkg-config -modversion gtk+-2.0 pkg-config gtk+-2.0 -cflags -libs,gtk-demo,1 #include 2 int main(int argc,char *argv) 3 4 GtkWidget *window; 5 gtk_init( 10 gcc 10-1.c -o

4、 10-1 pkg-config gtk+-2.0 -cflags -libs,GtkWindow对象层次,GObject GtkObject GtkWidget GtkContainer GtkBin - GtkWindwo,GtkWidget 窗口小部件,所有窗口部件创建函数都返回一个GtkWidget类型,窗体控件GtkWindow,(1)创建窗口: GtkWidget * gtk_window_new(GtkWindowType type) (2)设置窗口标题: void gtk_window_set_title(GtkWindow *window,const gchar *title

5、) (3)设置窗口位置: void gtk_window_set_position(GtkWindow *window,GtkWindowPosition position) (4)设置窗口大小: void gtk_window_set_default_size(GtkWindow *window,gint width,gint height) (5)调整窗口大小: void gtk_window_resize(GtkWindow *window,gint width,gboolean resizable) (6)设置窗口是否可调整大小: void gtk_windwo_set_resizab

6、le(GtkWindow *window,gboolean resizebale),按钮控件GtkButton,(1)创建按钮: GtkWidget *gtk_button_new(void); (2)创建带标签的按钮: GtkWidget *gtk_button_new_with_label(const gchar *label);,转换开关按钮(GtkToggleButton)、复选框按钮(GtkCheckButton)和单选按钮(GtkRadioButton)。它们都继承自GtkButton GtkButton GtkToggleButton GtkCheckButton GtkRadi

7、oButton,标签控件GtkLabel,(1)创建标签: GtkWidget* gtk_label_new(const char *str); (2)获取标签的文本内容: void gtk_label_set_text(GtkLabel*label, const char *str); (3)设置标签的文本内容 const gchar* gtk_label_get_text(GtkLabel *label);,文本框控件GtkEntry,(1)创建文本框: GtkWidget * gtk_entry_new(void) (2)创建文本框并设置其最大输入长度: GtkWidget * gtk_

8、entry_new_width_max_length(gint max) (3)设置文本框最大输入长度: void gtk_entry_set_max_length(GtkEntry *entry,gint max) (4)获取文本框的内容: G_CONST_RETURN gchar* gtk_entry_get_text(GtkEntry *entry) (5)设置文本框的内容: void gtk_entry_set_text(GtkEntry *entry,const gchar *text) (6)在文本框内容末尾插入内容: void gtk_entry_append_text(GtkE

9、ntry *entry,const gchar *text) (7)在文本框内容开头插入内容: void gtk_entry_prepend_text(GtkEntry *entry,const gchar *text) (8)设置文本框内容是否可见: void gtk_entry_set_visibility(GtkEntry *entry,gboolean visible);,对话框控件GtkDialog,(1)创建对话框: GtkWidget * gtk_dialog_new(void); (2)创建对话框并指定设置: GtkWidget* gtk_dialog_new_with_but

10、tons(const gchar *title,GtkWindow *parent,GtkDialogFlags flags,const gchar *first_button_text,); (3)运行对话框: gint gtk_dialog_run(GtkDialog *dialog);,其中gtk_dialog_new_with_buttons函数是创建一个完整的带有标题和按钮的对话框窗口,第二个参数parent指向应用程序的主窗口,flags参数指定对话框的属性组合,它是GtkDialogFlags枚举值按位或,这类枚举值有: GTK_DIALOG_MODAL(强迫对话框为模式对话框)

11、 GTK_DIALOG_DESTROY_WITH_PARENT(对话框的父窗体消失时,它也跟着结束) GTK_DIALOG_NO_SEPARATOR(主窗口区域和按钮区域之间隐藏分割线),消息对话框GtkMessageDialog,消息对话框GtkMessageDialog继承于GtkDialog,用起来比较简单,它的创建函数如下: GtkWidget* gtk_message_dialog_new(GtkWindow *parent, GtkDialogFlags flags, GtkMessageType type, GtkButtonsType buttons, const gchar

12、*message_format, .);,1 #include 2 int main(int argc,char *argv) 3 4 GtkWidget *window,*button; 5 gtk_init( 16 ,事件、信号和回调函数,GUI库有一个共同点:必须有某种机制响应用户动作以执行代码 命令行程序的做法:就是暂停执行,等待用户输入,然后采用switch语句等机制使程序根据输入不同而分支执行 GUI程序:由事件和事件监听器系统来解决问题,GTK+有自己的事件和事件监听器系统,叫做信号(signal)和回调函数(callback) GTK+信号:当某事件发生时GtkObject对象

13、发出的数据 回调函数:与信号相连接,一旦信号发出就会被调用的函数。,控制权的传递是使用“信号”的办法来完成的 有所有构件都继承的信号,如 “destroy”,有构件专有的信号,如开关 (toggle) 按钮发出的 “toggled” 信号,连接回调函数,要使一个按钮执行一个动作,我们需设置信号和信号处理函数之间的连接 g_signal_connect(gpointer *object,const gchar *name,GCallback func,gpointer user_data) 第一个参数是要发出信号的构件,第二个参数是你想要连接的信号的名称,第三个参数是信号被捕获时所要调用的函数,

14、第四个参数是你想传递给这个函数的数据 连接回调函数没有任何限制,可以将多个信号连接到一个回调函数,也可以将多个回调函数连接到一个信号,回调函数的原型,void a_callback_function(GtkWidget *widget,gpointer user_data) 两个参数:第一个是指向发出信号的窗口部件的指针,第二个是将回调函数与信号连接时定义的任一个指针,1 #include 2 void closeApp(GtkWidget *widget,GdkEvent *event,gpointer data) 3 4 gtk_main_quit(); 5 6 void button_c

15、licked(GtkWidget *widget,gpointer data) 7 8 GtkWidget *dialog; 9 dialog=gtk_message_dialog_new(NULL,GTK_DIALOG_MODAL|GTK_ DIALOG_DESTROY_WITH_PARENT,GTK_MESSAGE_INFO,GTK_BUTTONS_ OK,(gchar*)data); 10 gtk_dialog_run(GTK_DIALOG(dialog); 11 gtk_widget_destroy(dialog); 12 ,13 int main(int argc,char *arg

16、v) 14 15 GtkWidget *window,*button; 16 gtk_init( 29 ,应用容器的Gtk程序,容器: 所谓容器,就是可以在其中放置其它界面元素的元素。其中放置的元素可以是可见的按钮、图标,也可以还是一个容器; 以继承的观点来理解,GtkWidget有一个直接的派生类GtkContainer作为所有容器类的基类; 按照容器中可以容纳元素的个数,容器又可以分为两类: 只能容纳一个元素的容器; 可以容纳多个元素的容器。,应用容器的Gtk程序,常见的容器: 容纳一个元素:(GtkBin的子类 ) GtkWindow GtkButton GtkFrame 容纳多个元素 :(GtkContainer 的子类) GtkBox GtkTable GtkPa

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作范文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号