图形界面编程
文章平均质量分 72
lianghe_work
热爱linux
展开
-
GTK入门学习:布局练习之计算器
接下来,我们做一个布局练习,如下图:我们用表格布局实现,表格布局参考坐标如下:这里我们用到行编辑控件( GtkEntry )。行编辑的创建:GtkWidget * gtk_entry_new(void);返回值:行编辑指针行编辑内容的设置:void gtk_entry_set_t原创 2015-07-26 20:12:26 · 3697 阅读 · 1 评论 -
GTK进阶学习:设置窗口背景图(可指定其大小)
设置窗口背景图(可指定其大小):源代码:#include void change_background(GtkWidget *widget, int w, int h, const gchar *path){ //1.允许窗口可以绘图 gtk_widget_set_app_paintable(widget, TRUE); gtk_wid原创 2015-07-30 09:49:44 · 5069 阅读 · 1 评论 -
GTK进阶学习:定时器
定时器在应用编程里用得很广,我们手机里的闹钟,幻灯片播放图片等应用都用到定时器。定时器,每隔一段时间干一件事(程序里表现为调用一个函数),像闹钟,每隔一天响一次。定时器的创建:guint g_timeout_add(guint interval, GSourceFunc function, gpointer data);interval:设置的时间间隔,原创 2015-07-30 10:03:32 · 3329 阅读 · 0 评论 -
GTK进阶学习:鼠标事件
鼠标事件,可以理解为操作鼠标的动作。对于窗口而言,用户操作鼠标,窗口检测到鼠标的操作( 产生一个信号 ),然后去做相应处理( 调用其规定的回调函数 ),即可认为是鼠标事件,还是信号与回调函数的知识点。信号与回调函数的使用请点击此处。窗口默认不接收鼠标的操作,需要手动添加让其接收。设置控件捕获(接收)相应的事件:void原创 2015-07-30 15:24:19 · 4710 阅读 · 0 评论 -
GTK+ Widget的内部结构与工作流程
GtkWidget的基本结构是这样的:[objc] view plaincopytypedef struct { GtkStyle *GSEAL (style); GtkRequisition GSEAL (requisition); GtkAllocation GSEAL (allocation);原创 2015-07-30 16:42:06 · 4012 阅读 · 0 评论 -
GTK帮助文档的使用
学习图形界面开发,肯定离不开帮助文档的使用,因为它不像C语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必要去记,用到什么就去帮助文档查看用法。我们使用GTK帮助文档,主要分为这么几步:1)查看所用控件的相应接口(功能,参数,返回值)2)查看控件的继承关系( 继承过来的接口,继承过来的信号 )3)查看控原创 2015-07-30 16:40:43 · 4095 阅读 · 2 评论 -
GTK进阶学习:GTK实现截图功能( 可以指定截图范围 )
按按钮截图,图片保存在当前路径为“save.png”:[cpp] view plaincopy#include #include /******************************************************** 功能:指定窗口区域截图,需要包含头文件cairo.h 参数:原创 2015-07-30 17:03:32 · 2350 阅读 · 0 评论 -
Linux之GTK系列教程
00、背上行囊1——程序员学习之道01、背上行囊2——为什么要学习GTK02、背上行囊3——GUI概述03、背上行囊4——GTK简介04、背上行囊5——GTK环境搭建( Linux )05、背上行囊6——GTK环境搭建( windows )06、踏上旅途1——一个简单的空白窗口07、踏上旅途2——控件的添加08、踏上旅途3——布局容器之水平布局09、踏上旅途原创 2015-07-25 10:55:07 · 25603 阅读 · 10 评论 -
GTK进阶学习:绘图事件
GTK界面只要有图片的地方,其底层实际上是通过绘图实现的,所以,我们很有必要学习一下绘图,这里我们使用 Cairo 进行相应的绘图操作。Cairo是用于绘制二维矢量图形的跨平台图形库,采用 C 语言实现,又被许多其它计算机语言所绑定。我们可以使用Cairo库在窗口中绘图,也可以用于生成PNG图片、PDF、PostScript、SVG文件。Cairo同时也是自由软件库,自GTK+原创 2015-07-30 16:38:25 · 8100 阅读 · 2 评论 -
GTK进阶学习:属性改变事件
当窗口初始化,被移动或拉伸时,会触发属性改变事件。属性改变事件产生的信号:configure_event其回调函数的定义如下:gboolean callback( GtkWidget *widget, GdkEventConfigure *event, gpointer data )原创 2015-07-30 15:57:13 · 1812 阅读 · 0 评论 -
GTK进阶学习:键盘事件
键盘事件,可以理解为操作键盘的动作。对于窗口而言,用户操作键盘,窗口检测到键盘的操作( 产生一个信号 ),然后去做相应处理( 调用其规定的回调函数 ),即可认为是键盘事件,还是信号与回调函数的知识点。信号与回调函数的使用请点击此处。窗口默认就能接收键盘事件,其中的键值定义在 /usr/include/gtk-2.0/gdk/gdkkeysyms.h 文件里原创 2015-07-30 15:38:26 · 2825 阅读 · 0 评论 -
GTK进阶学习:事件盒子
有些控件( 如:标签GtkLabel,图片控件GtkImage 等),不响应GDK事件,相当于鼠标在其上面点击,它是捕获不到的。用户通过事件盒子可以解决这个问题。事件盒子给控件提供一个GDK窗口来捕获事件。我们把控件放在事件盒子里,当我们用鼠标点击这个控件时,这个事件盒子就能捕获到点击的状态。事件盒子的创建:GtkWidget *gtk_even原创 2015-07-30 16:25:33 · 3155 阅读 · 0 评论 -
为什么要学习GTK?
开发图形界面的工具包有很多,windows有WPF、WinForm,Android有自带的SDK,IOS也有自己的一套,跨平台的话可以用Qt,结果发现,GTK真没它的用武之地。实际上,GTK的地位真是这样的,那我们为啥学习它呢?首先,GTK是C语言实现的。我们需要明白,对于C程序员而言,大部分都没有接触过图形界面编程,但是对于以后的发展,我们很有必要了解一下图形界面编程。那原创 2015-07-24 15:02:06 · 6430 阅读 · 2 评论 -
如何学习程序
程序员之道,万变不离其宗,说相声讲究的是说、学、逗、唱,学习程序最快也是最好的办法就是:过、抄、仿、改、调、看、练、创、悟:1、过:学习一门新的语言,第一步就是把它所涉及的基础知识大体过一点,不求深解,只求了解——第一遍:无需了解太过深入的理论,大体知道这门语言是什么样的,主要面向哪些场合,一些基本的语法格式是什么样的就可以了。2、抄代码:刚开始写代码,没有多少人一原创 2015-07-24 14:59:00 · 5607 阅读 · 3 评论 -
GUI概述
GUI简介GUI(Graphics User Interface),中文名称为图形用户界面,是指采用图形方式显示的计算机操作用户界面,是计算机与其使用者之间的对话接口,是计算机系统的重要组成部分。早期,电脑向用户提供的是单调、枯燥、纯字符状态的“命令行界面(CLI)”,也有人称之为字符用户界面(CUI),如图 1.1所示。由于字符用户界面的操作方式需要用户死原创 2015-07-24 15:15:36 · 36927 阅读 · 0 评论 -
GTK+简介
GTK+( GIMP Toolkit ) 是一套在 GIMP 的基础上发展而来的高级的、可伸缩的现代化、跨平台图形工具包,提供一整套完备的图形构件,适用于大大小小各种软件工程项目,不论是小到只需要一个窗口,还是复杂得如桌面环境。简单来说,GTK+ 是一种函数库是用来帮助制作图形交互界面的。同时,它遵循 LGPL 许可证,所以用户可以用它来开发开源软件、自由软件,甚至是封闭源代码的商业软件,而不用花原创 2015-07-24 15:17:57 · 4785 阅读 · 0 评论 -
GTK环境搭建( Linux )
由于Linux的Gnome桌面就是用GTK编写的,所以,Linux本身就包含GTK工具库,安装GTK工具库在线安装即可。首先,在终端敲安装命令:接着,测试是否安装成功。如果出现以下信息,证明安装成功。转自:http://blog.csdn.net/tennysonsky/原创 2015-07-24 15:20:26 · 7785 阅读 · 1 评论 -
GTK+ window环境的搭建
1) 下载 gtk+-bundle 包( 可以去官网下载:http://www.gtk.org/ -> Download -> Windows (32-bit) and 64-bit -> All-in-one bundle ) 2) 解压 gtk+-bundle_2.24.10-20120208_win32.zip 在一个没有中文路径的地方( 例如:F:\gtk\gtk+原创 2015-07-24 15:53:34 · 4188 阅读 · 0 评论 -
GTK常用控件之笔记本控件( GtkNotebook )
笔记本控件,可以让用户标签式地切换多个界面。当我们需要多窗口切换时,使用笔记本控件是一个明智的选择。笔记本控件的创建:GtkWidget *gtk_notebook_new(void);返回值:笔记本控件指针设置页标签的位置:void gtk_notebook_set_tab_pos( GtkNotebook *n原创 2015-07-30 09:36:13 · 4665 阅读 · 0 评论 -
GTK进阶学习:改变控件字体大小
改变控件字体大小:[cpp] view plaincopy#include /* 功能: 设置控件字体大小 * widget: 需要改变字体的控件 * size: 字体大小 * is_button: TRUE代表控件为按钮,FALSE为其它控件 */ static vo原创 2015-07-30 09:55:10 · 3558 阅读 · 2 评论 -
GTK入门学习:布局容器之固定布局
前面我们学习的水平、垂直和表格布局容器,控件会跟着容器大小的变化进行自动适应,而固定布局容器里的控件则不会跟着变化( 则固定不变 )。固定布局的创建:GtkWidget *gtk_fixed_new(void);返回值:固定布局容器指针固定布局容器添加控件:void gtk_fixed_put( GtkFixed *fixed,原创 2015-07-26 13:31:51 · 6222 阅读 · 0 评论 -
GTK入门学习:控件的添加
上面的例子实在是太简陋了,它里面什么都没有。接下来我们一起为窗口添加控件。在添加之前,我们先了解一下控件。控件是对数据和方法的封装。控件有自己的属性和方法。属性是指控件的特征。方法是指控件的一些简单而可见的功能。如按钮就是一个控件,这个按钮是方形的,里面有张图片,这是我们能看到外观属性,同时,这个按钮具备被人按下的功能。GTK中控件主要分为两类:容器控件,非容器控件原创 2015-07-25 10:12:30 · 7383 阅读 · 3 评论 -
GTK入门学习:布局容器之垂直布局
垂直布局和水平布局的用法基本是一样,无非是新建垂直布局容器接口,还有控件摆放的方向不同。垂直布局容器的创建:GtkWidget *gtk_vbox_new( gboolean homogeneous, gint spacing );完整代码如下:#include i原创 2015-07-25 10:49:04 · 3362 阅读 · 2 评论 -
GTK入门学习:布局容器之表格布局
学习水平和垂直布局容器后,我们几乎能布出任何风格的布局,只需要嵌套使用水平布局容器和垂直布局容器即可。假如我们要完成下图的布局,我们该怎么做呢?1)创建一个垂直布局容器( A )2)创建一个水平布局容器( B ),一个close按钮( C )3)将水平布局容器和close按钮添加到垂直布局容器里( 将 B 和 C 添加到 A )4)创建button 1按原创 2015-07-26 12:48:59 · 5502 阅读 · 4 评论 -
GTK入门学习:glade的介绍
上面的学习中,我们是通过纯C语言代码来进行GTK编程的,这也是我们学习GTK的最佳方法,因为这样我们可以清楚地知道整个流程,大体流程如下:1)创建主窗口,根据需要设置窗口的相应属性2)创建布局容器3)把布局容器添加到窗口里4)根据需要创建相应的控件,根据需要设置控件的相应属性5)把控件添加到布局容器里6)根据需要处理控件的信号7)显示所有原创 2015-07-27 14:35:30 · 3101 阅读 · 0 评论 -
GTK常用控件之窗口( GtkWindow )
窗口的创建:GtkWidget *gtk_window_new(GtkWindowType type);GtkWindowType是一个枚举,有两种情况:GTK_WINDOW_TOPLEVEL:顶层窗口,有边框GTK_WINDOW_POPUP: 弹式窗口,没边框返回值:窗口指针标题的设置:void gtk_window_set原创 2015-07-27 16:46:11 · 12624 阅读 · 1 评论 -
GTK常用控件之标签( GtkLabel )
标签主要是显示文本信息,用作标志。标签的创建:GtkWidget *gtk_label_new(const gchar *str);str:文本内容返回值:标签指针设置标签的内容:void gtk_label_set_text (GtkLabel *label, const gch原创 2015-07-27 17:25:58 · 4488 阅读 · 0 评论 -
GTK入门学习:信号与回调函数
前面我们学习的GTK界面都是静态的,我们按下按钮它是没有响应的,如何让它有响应呢?接下来我们一起学习GTK的信号与回调函数。GTK采用了信号与回调函数来处理窗口外部传来的事件、消息或信号。当信号发生时,程序自动调用为信号连接的回调函数。学习应用编程,我们会经常接触到“信号”这个名词。GTK中的“信号”实际上是一种软件中断。“中断”在我们生活中经常遇到,譬原创 2015-07-27 11:48:51 · 7139 阅读 · 1 评论 -
GTK简单版计算器
接下来我们做一个简单版的计算器。1)获取按钮上的内容。2)如果获取的内容是“ c ”,则代表进行退格操作,相当于删去最后一个字符。3)如果获取的内容不是“ c ”,则把每一次获取的内容连接起来,如:第一次按了 “ 1 ”, 第二次按了 “ + ”, 第三次按了 “ 1 ”, 连起来则变为 “1+1”。4)如果获取的内容是“ = ”,则需要相应的运算。先把原创 2015-07-27 12:03:31 · 4628 阅读 · 4 评论 -
GTK入门学习:glade的使用
搭建好环境后,在终端敲 glade 即可启动glade工具。glade的整体框图:常用控件选择区:列举了常用的控件,常用的有三类:顶层(主窗口等),容器(各种布局容器等),控制和显示(按钮、便签、图片控件等)当鼠标放在控件时,会自动显示控件的中文文字,同时,还能人为设置,如下图:界面编辑区:把控件拖放在这进原创 2015-07-27 15:00:35 · 7715 阅读 · 4 评论 -
GTK入门学习:glade的环境搭建
1) Linux环境搭建在线安装即可,安装命令如下:测试是否安装成功,在终端敲 glade 即可:2)windows版本环境搭建下载一个windows版本,点击此处即可。双击后一直“下一步”安装即可。需要注意的是,如果是windows版本的glade设原创 2015-07-27 14:46:18 · 2537 阅读 · 0 评论 -
GTK入门学习:Libglade 和 GtkBuilder 的区别使用
前面给大家提过,用windows版本glade可以 2 种格式的glade: Libglade ( gtk2.12前的版本 ), GtkBuilder( 新版的,现在用的是这个版本 )。格式不一样,最终使用的库函数不一样。如图:1)glade画UI,注意保存为Libglade格式,如下图:c代码如下:[cpp] view原创 2015-07-27 16:37:15 · 2527 阅读 · 0 评论 -
GTK入门学习:布局容器之水平布局
如果我们希望窗口里多放添加几个控件,直接添加是不成功的,因为窗口只能容纳一个控件的容器。这时候,我们需要借助布局容器,我们先把布局容器添加到窗口里,然后再把所需要添加的控件放在布局容器里。布局容器的主要分类:水平布局( GtkHBox)、垂直布局(GtkVBox )、表格布局(GtkTable)、固定布局(GtkFixed )。水平布局容器:原创 2015-07-25 10:36:57 · 5718 阅读 · 5 评论 -
GTK常用控件之进度条( GtkProgressBar )
我们到处都能看到进度条的应用,我们下载拷贝个文件,下载个电影等总能看到进度条的影子,如图:进度条的常用操作无非设置其比例或者获取其比例。进度条的创建:GtkWidget *gtk_progress_bar_new(void);返回值:进度条指针设置进度条显示的进度比例:void gtk_progress_bar原创 2015-07-28 12:08:11 · 4872 阅读 · 0 评论 -
GTK常用控件之按钮( GtkButton )
按钮在GUI里应用最为广泛,我们几乎能在所有的界面中看到按钮。空按钮的创建(按钮上没有任何内容):GtkWidget *gtk_button_new(void);返回值:按钮指针创建带文本内容的按钮:GtkWidget *gtk_button_new_with_label (const gchar *label);原创 2015-07-28 20:40:20 · 8115 阅读 · 1 评论 -
GTK常用控件之图片控件( GtkImage )
图片控件和标签的作用很类似,都是作为显示用的,只是图片控件显示的内容是图片。图片控件的创建:GtkWidget *gtk_image_new_from_file( const gchar *filename );filename:图片的名字,带路径的话需要加上路径( 相对或绝对 )返回值:图片控件指针通过上面方法创建的图片原创 2015-07-28 11:49:59 · 6202 阅读 · 2 评论 -
GTK常用控件之行编辑( GtkEntry )
行编辑,只允许输入一行内容的控件,如密码输入框。行编辑的创建:GtkWidget *gtk_entry_new(void);返回值:行编辑指针设置行编辑内容的最大长度:void gtk_entry_set_max_length(GtkEntry *entry, gint ma原创 2015-07-29 21:14:25 · 9931 阅读 · 0 评论 -
GTK入门学习:一个简单的空白窗口
我们在终端上新建一个 .c文件,如demo.c,在文件里写如下内容:写完代码后,我们对代码进程编译,直接用gcc编译即可,但是需要加上`pkg-config --cflags --libs gtk+-2.0` ( ` 为数字1键前面的反引号 )。因为用gcc直接编译,默认只找标准库,而我们刚才写的代码需要依赖GTK相应的库。pkg-config 是一个为原创 2015-07-24 15:58:16 · 8325 阅读 · 3 评论