博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux下c图形化编程之gtk+2.0简单学习
阅读量:7028 次
发布时间:2019-06-28

本文共 1963 字,大约阅读时间需要 6 分钟。

在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

安装完毕后就可以开始写第一个简单的程序了!

1 #include
//必须引用gtk/gtk.h这个头文件 2 int main(int argc,char *argv[]) //标准c语言主函数的声明 3 { 4 GtkWidget *window; //声明一个窗口控件的指针,其中GtkWidget是gtk+2.0控件类型。window是变量名,与变量类型无关 5 6 gtk_init(&argc,&argv); //初始化gtk+环境,在gtk+程序中是必须的 7 8 window = gtk_window_new(GTK_WINDOW_TOPLEVEL); 9 /*用来创建窗口。函数gtk_window_new 创建一个窗口并返回这个窗口的控件指针,这里把指针的值赋给了window这个变量;参数GTK_WINDOW_TOPLEVEL指明窗口的类型为最上层的主窗口,还有一个参数GTK_WINDOW_POPUP指明窗口类型为弹出式无边框窗口*/10 11 gtk_window_set_title(GTK_WINDOW(window),"hello World");//给window窗口设置标题12 13 gtk_window_set_default_size(GTK_WINDOW(window),500,500);//给window窗口设置大小14 g_signal_connect(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);15 /*事件监听函数,意思是,对于对象window,当"destroy"时间发生的时候,调用gtk_main_quit函数,传递这个函数的参数为NULL,也就是当你点击窗口关闭按钮的时候,结束程序*/16 17 gtk_widget_show(window); //显示上一步创建的窗口18 19 gtk_main();20 /*这个函数是最关键的,它是gtk+2.0的主事件循环,每个gtk+2.0程序都要有一个否则程序无法运行*/21 return FALSE;22 /*代码最后的逻辑返回值为FALSE它相当于整型的0。*/23 }

这样一个简单的程序就完成了,可以使用gcc直接编译,命令为

gcc test.c `pkg-config --cflags --libs gtk+-2.0`

其中最后一个符号和pkg前面的符号是~同一个按键的符号,不能写成单引号,gcc这个程序,如果你没有什么语法错误的话,会生成一个a.out的可执行文件,然后就可以开心的运行了,你会发现执行程序之后出现了一个名为hello World的窗口,这就说明你的第一个程序已经成功了。

 

转载于:https://www.cnblogs.com/kingos/p/4531738.html

你可能感兴趣的文章
html基础之 input:type
查看>>
json-lib简单处理json和对json的简单介绍
查看>>
jquery checkbox选中、改变状态、change和click事件
查看>>
java joor 实现反射简单调用
查看>>
Guava 8-区间
查看>>
自定义Spark Partitioner提升es-hadoop Bulk效率
查看>>
总结一些机器视觉库
查看>>
在CentOS Linux下部署Activemq 5
查看>>
把mysql脚本或其他数据库脚本导入Powerdesigner
查看>>
phalcon 连接多个数据库 phalcon multi-database
查看>>
React Native(十一)——按钮重复点击事件的处理
查看>>
机器学习笔记(4):多类逻辑回归-使用gluton
查看>>
26.angularJS $routeProvider
查看>>
内存映射函数remap_pfn_range学习——示例分析(2)
查看>>
年轻的工程师如何月入伍万XD
查看>>
NAT64与DNS64基本原理概述
查看>>
Java-Shiro(四):Shiro
查看>>
Oracle 备份、恢复单表或多表数据步骤
查看>>
ubuntu 步步为营之uclinux编译和移植(完整版)
查看>>
Lintcode: Partition Array
查看>>