- 博客(41)
- 资源 (106)
- 收藏
- 关注
原创 C语言也能做界面:踏上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、踏上旅途4——布局容器之垂直布局10、踏上旅途5...
2015-01-15 14:58:23 63774 8
转载 C语言与C++不得不说的那点事
说到C语言,就不得不说它的继承者——C++语言。众所周知,C++语言是在C语言的基础上,添加了面向对象、模板等现代程序设计语言的特性而发展起来的。两者无论是从语法规则上,还是从运算符的数量和使用上,都非常相似,所以我们常常将这两门语言统称为“C/C++”。虽然因为天然的血缘关系,导致两者非常相似,就像父亲与儿子相貌相似一样,但是,父亲和儿子毕竟是两个不同的各自独立的个体,而C语言和C++语言也同样
2015-01-29 13:55:49 1932 2
原创 虚拟机挂载到开发板的脚本文件,可以指定挂载目录,能自动设置开发板的ip
虚拟机挂载到开发板的脚步文件,可以指定挂载目录,能自动设置开发板的ip:echo -e "未占用IP\n">ip #把ip重定向到ip文件里,作为记录src=10.221.0.71:/home/wencong #虚拟机需要挂载的目录dest=/mnt #挂载到开发板的某个目录,这个为开发板的目录gw=10.221.20.254 #网关segment=10.221.2
2015-01-29 10:17:27 1442
转载 为什么要学习C++
语言之争是程序员永远不会疲倦的闲暇话题,初学者的语言选择也是大家所津津乐道的。回望这几年,随着Android, ios的来势汹汹,不少初学者都喜欢以Java, Objective-C作为自己的第一门语言。在这样的大环境之下,讨论 C++ 还有什么意义么?在瞎扯这个问题之前,我们先来看看为啥初学者都选择Java, Objective-C。估计原因很简单,就是入门容易。当然,这容易是相对于
2015-01-28 20:21:50 2268 1
原创 GTK进阶学习:绘图事件
GTK界面只要有图片的地方,其底层实际上是通过绘图实现的,所以,我们很有必要学习一下绘图,这里我们使用 Cairo 进行相应的绘图操作。Cairo是用于绘制二维矢量图形的跨平台图形库,采用 C 语言实现,又被许多其它计算机语言所绑定。我们可以使用Cairo库在窗口中绘图,也可以用于生成PNG图片、PDF、PostScript、SVG文件。Cairo同时也是自由软件库,自GTK+2.8版
2015-01-27 17:19:45 7137 1
原创 GTK进阶学习:事件盒子
有些控件( 如:标签GtkLabel,图片控件GtkImage 等),不响应GDK事件,相当于鼠标在其上面点击,它是捕获不到的。用户通过事件盒子可以解决这个问题。事件盒子给控件提供一个GDK窗口来捕获事件。我们把控件放在事件盒子里,当我们用鼠标点击这个控件时,这个事件盒子就能捕获到点击的状态。事件盒子的创建:GtkWidget *gtk_event_box_new(
2015-01-27 15:44:42 3021
原创 GTK进阶学习:属性改变事件
当窗口初始化,被移动或拉伸时,会触发属性改变事件。属性改变事件产生的信号:configure_event其回调函数的定义如下:gboolean callback( GtkWidget *widget, GdkEventConfigure *event, gpointer data )
2015-01-27 15:08:03 2346
原创 GTK进阶学习:键盘事件
键盘事件,可以理解为操作键盘的动作。对于窗口而言,用户操作键盘,窗口检测到键盘的操作( 产生一个信号 ),然后去做相应处理( 调用其规定的回调函数 ),即可认为是键盘事件,还是信号与回调函数的知识点。信号与回调函数的使用请点击此处。窗口默认就能接收键盘事件,其中的键值定义在/usr/include/gtk-2.0/gdk/gdkkeysyms.h文件里键盘按
2015-01-27 14:48:24 4311
原创 GTK进阶学习:鼠标事件
鼠标事件,可以理解为操作鼠标的动作。对于窗口而言,用户操作鼠标,窗口检测到鼠标的操作( 产生一个信号 ),然后去做相应处理( 调用其规定的回调函数 ),即可认为是鼠标事件,还是信号与回调函数的知识点。信号与回调函数的使用请点击此处。窗口默认不接收鼠标的操作,需要手动添加让其接收。设置控件捕获(接收)相应的事件:void gtk_widget_add_ev
2015-01-27 14:14:37 5688 1
原创 GTK进阶学习:定时器
定时器在应用编程里用得很广,我们手机里的闹钟,幻灯片播放图片等应用都用到定时器。定时器,每隔一段时间干一件事(程序里表现为调用一个函数),像闹钟,每隔一天响一次。定时器的创建:guint g_timeout_add(guint interval,GSourceFunc function,gpointer
2015-01-27 11:31:23 6788 8
原创 GTK进阶学习:GTK实现截图功能( 可以指定截图范围 )
按按钮截图,图片保存在当前路径为“save.png”:#include #include /********************************************************功能:指定窗口区域截图,需要包含头文件cairo.h 参数: area: 需要截图的窗口指针 x, y, w, h: 截图的范围 path_name: 保存图片的路径名字,
2015-01-26 18:00:45 3858 2
原创 GTK进阶学习:改变控件字体大小
改变控件字体大小:#include /* 功能: 设置控件字体大小 * widget: 需要改变字体的控件 * size: 字体大小 * is_button: TRUE代表控件为按钮,FALSE为其它控件 */static void set_widget_font_size(GtkWidget *widget, int size, gboole
2015-01-26 17:31:36 5377 3
原创 GTK进阶学习:设置窗口背景图(可指定其大小)
设置窗口背景图(可指定其大小):#include /* 功能: 设置背景图 * widget: 主窗口 * w, h: 图片的大小 * path: 图片路径 */void chang_background(GtkWidget *widget, int w, int h, const gchar *path){ gtk_widget_set_app_paintable(
2015-01-26 17:07:18 7579 4
原创 GTK常用控件之窗口( GtkWindow )
窗口的创建:GtkWidget *gtk_window_new(GtkWindowType type);GtkWindowType是一个枚举,有两种情况:GTK_WINDOW_TOPLEVEL:顶层窗口,有边框GTK_WINDOW_POPUP: 弹式窗口,没边框返回值:窗口指针标题的设置:void gtk_window_set_title(
2015-01-26 16:30:49 6053
原创 GTK常用控件之笔记本控件( GtkNotebook )
笔记本控件,可以让用户标签式地切换多个界面。当我们需要多窗口切换时,使用笔记本控件是一个明智的选择。笔记本控件的创建:GtkWidget *gtk_notebook_new(void);返回值:笔记本控件指针设置页标签的位置:void gtk_notebook_set_tab_pos(GtkNotebook *notebook,
2015-01-26 16:00:07 4519 1
原创 GTK常用控件之行编辑( GtkEntry )
行编辑,只允许输入一行内容的控件,如密码输入框。行编辑的创建:GtkWidget *gtk_entry_new(void);返回值:行编辑指针设置行编辑内容的最大长度:void gtk_entry_set_max_length(GtkEntry *entry, gint max);
2015-01-26 11:06:31 5675
原创 GTK常用控件之按钮( GtkButton )
按钮在GUI里应用最为广泛,我们几乎能在所有的界面中看到按钮。空按钮的创建(按钮上没有任何内容):GtkWidget *gtk_button_new(void);返回值:按钮指针创建带文本内容的按钮:GtkWidget *gtk_button_new_with_label (const gchar *label);label:文本内容
2015-01-23 17:36:59 9707 3
原创 GTK常用控件之图片控件( GtkImage )
图片控件和标签的作用很类似,都是作为显示用的,只是图片控件显示的内容是图片。通过上面方法创建的图片控件,以图片默认大小来显示,不能修改其大小。如果要改变图片的大小,我们要借助图片资源对象GdkPixbuf,需要注意的是,GdkPixbuf不属于控件类,它以 Gdk 开头。
2015-01-23 16:51:54 9080 1
原创 GTK常用控件之标签( GtkLabel )
标签主要是显示文本信息,用作标志。标签的创建:GtkWidget *gtk_label_new(const gchar *str);str:文本内容返回值:标签指针设置标签的内容:void gtk_label_set_text (GtkLabel *label, const gchar *str);
2015-01-23 15:15:24 8202
原创 GTK常用控件之进度条( GtkProgressBar )
我们到处都能看到进度条的应用,我们下载拷贝个文件,下载个电影等总能看到进度条的影子。进度条的常用操作无非设置其比例或者获取其比例。
2015-01-23 11:45:06 4312
原创 GTK入门学习:Libglade 和 GtkBuilder 的区别使用
前面给大家提过,用windows版本glade可以 2 种格式的glade: Libglade ( gtk2.12前的版本 ), GtkBuilder( 新版的,现在用的是这个版本 )。格式不一样,最终使用的库函数不一样。如图:Libglade && GtkBuilderLibgladeGtkBuilder#include 无Gl
2015-01-22 19:44:22 3747
原创 GTK入门学习:glade的使用
现在开始学习Glade的操作。选择控件时,一定要先按工具栏的“选择”按钮操作时,支持撤销(Ctrl+z)和恢复(Ctrl+y)等window的快捷键操作的流程和布局的过程是一致的:1)选择主窗口,根据需要设置窗口的相应属性2)选择布局容器3)根据需要选择相应的控件,根据需要设置控件的相应属性
2015-01-22 15:11:36 9830 9
原创 GTK入门学习:glade的介绍
上面的学习中,我们是通过纯C语言代码来进行GTK编程的,这也是我们学习GTK的最佳方面,因为这样我们可以清楚地知道整个流程,大体流程如下:1)创建主窗口,根据需要设置窗口的相应属性2)创建布局容器3)把布局容器添加到窗口里4)根据需要创建相应的控件,根据需要设置控件的相应属性5)把控件添加到布局容器里6)根据需要处理控件的信号7)显示所有的控件用纯C语言写G
2015-01-22 11:52:25 4363 1
原创 GTK简单版计算器
接下来我们做一个简单版的计算器。1)获取按钮上的内容。2)如果获取的内容是“ c ”,则代表进行退格操作,相当于删去最后一个字符。3)如果获取的内容不是“ c ”,则把每一次获取的内容连接起来,如:第一次按了 “ 1 ”, 第二次按了 “ + ”, 第三次按了 “ 1 ”, 连起来则变为 “1+1”。4)如果获取的内容是“ = ”,则需要相应的运算。先把连起来的字符串拆出来,然
2015-01-21 18:06:52 3520 1
原创 为什么要学习GTK?
开发图形界面的工具包有很多,windows有WPF、WinForm,Android有自带的SDK,IOS也有自己的一套,跨平台的话可以用Qt,结果发现,GTK真没它的用武之地。实际上,GTK的地位真是这样的,那我们为啥学习它呢?
2015-01-21 16:30:46 5895
原创 GTK入门学习:信号与回调函数
学习应用编程,我们会经常接触到“信号”这个名词。GTK中的“信号”实际上是一种软件中断。“中断”在我们生活中经常遇到,譬如,我正在房间里打游戏,突然送快递的来了,把正在玩游戏的我给“中断”了,我去签收快递( 处理中断 ),处理完成后,再继续玩我的游戏。GTK中的“信号”就是属于这么一种“中断”,当用户按下按钮的时候,就产生一个“中断”,相当于产生一个信号,接着就会处理这么一个“中断任务”(程序里体验为调用一个函数)。
2015-01-16 17:27:47 5721 2
原创 GTK帮助文档的使用
学习图形界面开发,肯定离不开帮助文档的使用,因为它不像C语言那样就那么几个函数接口,图形接口的接口可以用海量来形容,常用的我们可能能记住,其它的真的没有必要去记,用到什么就去帮助文档查看用法。
2015-01-16 16:18:16 6395
原创 GTK入门学习:布局练习之计算器
接下来,我们做一个布局练习,如下图:我们用表格布局实现,表格布局参考坐标如下:这里我们用到行编辑控件( GtkEntry )。行编辑的创建:GtkWidget * gtk_entry_new(void);返回值:行编辑指针行编辑内容的设置:void gtk_entry_set_text (GtkEntry *entry,
2015-01-16 11:56:09 3176 3
原创 GTK入门学习:布局容器之固定布局
前面我们学习的水平、垂直和表格布局容器,控件会跟着容器大小的变化进行自动适应,而固定布局容器里的控件则不会跟着变化( 则固定不变 )。固定布局的创建:GtkWidget *gtk_fixed_new(void);返回值:固定布局容器指针固定布局容器添加控件:void gtk_fixed_put( GtkFixed *fixed,
2015-01-15 20:23:39 3490
转载 如何学习程序
程序员之道,万变不离其宗,说相声讲究的是说、学、逗、唱,学习程序最快也是最好的办法就是:过、抄、仿、改、调、看、练、创、悟:1、过:学习一门新的语言,第一步就是把它所涉及的基础知识大体过一点,不求深解,只求了解——第一遍:无需了解太过深入的理论,大体知道这门语言是什么样的,主要面向哪些场合,一些基本的语法格式是什么样的就可以了。2、抄代码:刚开始写代码,没有多少
2015-01-15 19:13:00 6008
原创 GTK入门学习:布局容器之表格布局
学习水平和垂直布局容器后,我们几乎能布出任何风格的布局,只需要嵌套使用水平布局容器和垂直布局容器即可。假如我们要完成下图的布局,我们该怎么做呢?1)创建一个垂直布局容器( A )2)创建一个水平布局容器( B ),一个close按钮( C )3)将水平布局容器和close按钮添加到垂直布局容器里( 将 B 和 C 添加到 A )4)创建button 1按钮( D )
2015-01-15 18:00:29 4836
原创 GTK入门学习:布局容器之垂直布局
垂直布局和水平布局的用法基本是一样,无非是新建垂直布局容器接口,还有控件摆放的方向不同。垂直布局容器的创建:GtkWidget *gtk_vbox_new( gboolean homogeneous, gint spacing );完整代码如下:#include // 头文件int main(int argc, char *argv[]) {
2015-01-15 16:12:08 2385
原创 GTK入门学习:布局容器之水平布局
如果我们希望窗口里多放添加几个控件,直接添加是不成功的,因为窗口只能容纳一个控件的容器。这时候,我们需要借助布局容器,我们先把布局容器添加到窗口里,然后再把所需要添加的控件放在布局容器里。布局容器的主要分类:水平布局( GtkHBox)、垂直布局( GtkVBox )、表格布局( GtkTable )、固定布局( GtkFixed )。水平布局容器:
2015-01-15 15:34:39 3911 1
原创 GTK入门学习:控件的添加
上面的例子实在是太简陋了,它里面什么都没有。接下来我们一起为窗口添加控件。在添加之前,我们先了解一下控件。控件是对数据和方法的封装。控件有自己的属性和方法。属性是指控件的特征。方法是指控件的一些简单而可见的功能。如按钮就是一个控件,这个按钮是方形的,里面有张图片,这是我们能看到外观属性,同时,这个按钮具备被人按下的功能。GTK中控件主要分为两类:容器控件,非容器控件。容
2015-01-14 17:55:19 5783 6
原创 GTK入门学习:一个简单的空白窗口
我们在终端上新建一个 .c文件,如demo.c,在文件里写如下内容:写完代码后,我们对代码进程编译,直接用gcc编译即可,但是需要加上`pkg-config --cflags --libs gtk+-2.0` ( ` 为数字1键前面的反引号 )。因为用gcc直接编译,默认只找标准库,而我们刚才写的代码需要依赖GTK相应的库。pkg-config 是一个为已经安装的包
2015-01-14 12:49:14 8236 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-01-14 11:35:36 9016 4
原创 windows像linux般使用gcc,make等工具
需要安装MinGW编译器。 MinGW是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时库。 1) 去下载个MinGW(如mingw-get-inst-20120426.exe) 2) 安装mingw-get-inst-20120426.exe(
2015-01-14 11:21:17 16933
原创 Qt中获得IP、MAC地址、用户名、机器名
// 涉及到网络模块时记得在工程问题,加上: QT += network// 并且根据相应提示,添加相应的头文件// 获得ip地址QString getIpAdress(){ QString localIPAddress = ""; QListlistAddress = QNetworkInterface::allAddresses();
2015-01-14 10:51:20 3727 2
原创 GTK+ Widget的内部结构与工作流程 (转)
GtkWidget的基本结构是这样的:typedef struct { GtkStyle *GSEAL (style); GtkRequisition GSEAL (requisition); GtkAllocation GSEAL (allocation); GdkWindow *GSEAL (window); GtkWidget *GSEAL
2015-01-14 10:29:57 3708
标准模板库之map示例代码
2015-09-17
C语言排序实例(选择、冒泡、插入、折半、快速)
2015-09-04
ui 文件和 Qt 代码关系测试代码
2015-08-28
利用 Qt Creator 建立空白工程文件示例代码
2015-08-26
Qt快速入门(vim纯代码编写)测试代码
2015-08-26
进程同步与互斥:System V 信号量示例代码
2015-08-20
标准库 string 类的使用示例代码
2015-07-13
QWidget样式表设置背景示例代码
2015-06-26
标准模板库之vector示例代码
2015-06-25
C++入门学习——模板示例代码
2015-06-24
Qt4 项目迁移到 Qt5 问题测试代码
2015-06-18
有名信号量示例代码
2015-06-15
无名信号量示例代码
2015-06-15
互斥锁示例代码
2015-06-14
线程池示例代码
2015-06-14
线程同步与互斥:读写锁示例代码
2015-06-14
线程私有数据示例代码
2015-06-11
线程示例代码
2015-06-10
共享内存示例代码
2015-06-09
protobuf导入定义(import)
2017-06-30
protobuf枚举和包的使用
2017-06-29
repeated限定修饰符的使用
2017-06-29
protobuf常用序列化和反序列化API
2017-06-29
base64编码和解码
2017-06-23
使用HTTP协议实现通信
2016-12-28
C++单向链表的实现
2015-11-06
虚函数表介绍示例代码
2015-10-19
C++中explicit作用示例代码
2015-10-13
Linux多播组测试代码
2015-10-11
C++通过jsoncpp类库读写JSON文件示例代码
2015-09-29
线程基类的设计示例代码
2015-09-29
C++单例模式示例代码
2015-09-29
JsonCpp源码
2015-09-29
线程堆栈大小的使用介绍示例代码
2015-09-27
C++通过TinyXML类库读写XML文件示例代码
2015-09-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人