linux下c图形化编程之gtk+2.0简单学习
在linux下想做一个图形化的界面,然后自己选择使用gtk+2.0来进行编辑,我的电脑已经安装过gtk+2.0了,所以就在网上找了一个安装方法,结果未测试,大家有安装问题可以说下,一起探讨下。
1、安装gcc/g++/gdb/make 等基本编程工具
sudo apt-get install build-essential
2、安装 libgtk2.0-dev libglib2.0-dev 等开发相关的库文件
sudo apt-get install gnome-core-devel
3、用于在编译GTK程序时自动找出头文件及库文件位置
sudo apt-get install pkg-config
4、安装 devhelp GTK文档查看程序
sudo apt-get install devhelp
5、安装 gtk/glib 的API参考手册及其它帮助文档
sudo apt-get install libglib2.0-doc libgtk2.0-doc
6、安装基于GTK的界面GTK是开发Gnome窗口的c/c++语言图形库
sudo apt-get install glade libglade2-dev
7、安装gtk2.0 或者 将gtk+2.0所需的所有文件统通下载安装完毕
sudo apt-get install libgtk2.0-dev
安装完毕后就可以开始写第一个简单的程序了!
#include<gtk/gtk.h> //必须引用gtk/gtk.h这个头文件
int main(int argc,char *argv[]) //标准c语言主函数的声明
{
GtkWidget *window; //声明一个窗口控件的指针,其中GtkWidget是gtk+2.0控件类型。window是变量名,与变量类型无关 gtk_init(&argc,&argv); //初始化gtk+环境,在gtk+程序中是必须的 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
/*用来创建窗口。函数gtk_window_new 创建一个窗口并返回这个窗口的控件指针,这里把指针的值赋给了window这个变量;参数GTK_WINDOW_TOPLEVEL指明窗口的类型为最上层的主窗口,还有一个参数GTK_WINDOW_POPUP指明窗口类型为弹出式无边框窗口*/ gtk_window_set_title(GTK_WINDOW(window),"hello World");//给window窗口设置标题 gtk_window_set_default_size(GTK_WINDOW(window),,);//给window窗口设置大小
g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);
/*事件监听函数,意思是,对于对象window,当"destroy"时间发生的时候,调用gtk_main_quit函数,传递这个函数的参数为NULL,也就是当你点击窗口关闭按钮的时候,结束程序*/ gtk_widget_show(window); //显示上一步创建的窗口 gtk_main();
/*这个函数是最关键的,它是gtk+2.0的主事件循环,每个gtk+2.0程序都要有一个否则程序无法运行*/
return FALSE;
/*代码最后的逻辑返回值为FALSE它相当于整型的0。*/
}
这样一个简单的程序就完成了,可以使用gcc直接编译,命令为
gcc test.c `pkg-config --cflags --libs gtk+-2.0`
其中最后一个符号和pkg前面的符号是~同一个按键的符号,不能写成单引号,gcc这个程序,如果你没有什么语法错误的话,会生成一个a.out的可执行文件,然后就可以开心的运行了,你会发现执行程序之后出现了一个名为hello World的窗口,这就说明你的第一个程序已经成功了。
最新文章
- Storm与Spark:谁才是我们的实时处理利器
- IntelliJ IDEA Community Edition 14.1.4下使用 Apache-Subversion搭建代码管理环境
- bzoj3087: Coci2009 misolovke
- tomcat的配置详解:[1]tomcat绑定域名
- HDU 4651 Partition(整数拆分)
- ubuntu下查看文件md5
- tomcat解决乱码
- 【转】Visual Stdio VS 错误 error : 0xC00000FD: Stack overflow. 更改堆栈空间解决栈溢出问题
- MVC源码分析 - 路由匹配
- 移植WL18XX到高通的时候,会出现几个.KO文件没有编译出来的情况
- 201521123100 《Java程序设计》 第2周学习总结
- Linux useradd
- Apache + PHP配置
- vue-cli快速构建vue项目模板
- mysql乐观锁总结和实践(一)
- Spring Cloud Zuul的一个坑
- Python——eventlet.greenpool
- 解题:洛谷4314 CPU监控
- ubuntu下code::blocks设置运行窗口为gnome命令行
- Docker 配置国内镜像拉取中心,Configure docker to use faster registries in China.
热门文章
- 【bzoj2844】albus就是要第一个出场
- Win8Metro(C#)数字图像处理--2.40二值图像轮廓提取
- selenium - switch_to.frame()- 内嵌表单的切换
- Android MediaRecorder解析
- jsp 基本原理
- Global Vectors forWord Representation
- python 文字转语音包pyttsx安装出错解决方法
- 20155335俞昆《Java程序设计》第五周总结
- c++树,知道前序和中序求后序遍历
- C - Contest Setting Gym - 101982C dp 补题