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的窗口,这就说明你的第一个程序已经成功了。
linux下c图形化编程之gtk+2.0简单学习的更多相关文章
- MacOS系统下的图形化工具
MacOS系统下的图形化工具 MacOS系统下安装了Git后,发现如果Git中有中文文档操作还是比较麻烦(需要输入中文的文件名).图形化对Git的操作还是相对于方便一些.所以准备找一个图形化的工具. ...
- Linux下以tar包的形式安装mysql8.0.28
Linux下以tar包的形式安装mysql8.0.28 1.首先卸载自带的Mysql-libs(如果之前安装过mysql,要全都卸载掉) rpm -qa | grep -i -E mysql\|mar ...
- Windows下搭建远程Linux主机的图形化本地开发环境
在实际开发中,项目的类生产.生产环境一般都是选择Linux为服务器进行部署. 相应的,我们的开发最好也在Linux环境下进行,否则容易引发其他的问题,比如不同环境下功能不一致.库依赖差异等. 但是Li ...
- Sparrow-WiFi:一款Linux平台下的图形化WiFi及蓝牙分析工具
工具概述 Sparrow-wifi本质上一款针对下一代2.4GHz和5GHz的WiFi频谱感知工具,它不仅提供了GUI图形化用户界面,而且功能更加全面,可以代替类似inSSIDer和linssid之类 ...
- Samba在CentOS下的图形化界面的安装
第一步:构建yum仓库(在此用的是北交大的yum仓库) 打开目录/etc/yum.repos.d下的CentOS-Base.repo文件,此处是我自己建的yum仓库,修改里面的链接地址为北交大的镜像的 ...
- 自制操作系统Antz(9)——实现内核 (下) 实现图形化界面
Antz系统更新地址: https://www.cnblogs.com/LexMoon/category/1262287.html Linux内核源码分析地址:https://www.cnblogs. ...
- (47)LINUX应用编程和网络编程之二Linux文件属性
Linux下的文件系统为树形结构,入口为/ 树形结构下的文件目录: 无论哪个版本的Linux系统,都有这些目录,这些目录应该是标准的.各个Linux发行版本会存在一些小小的差异,但总体来说,还是大体差 ...
- Putty+Xming实现在Windows客户端显示Linux服务器端的图形化程序
走了不少弯路啊~~~言归正传,最近研发和我说要在一台EC2的机器上运行一个带GUI的程序,当时我就纳闷了:EC2的机器应该没有桌面套件的吧,那该怎么运行GUI的程序呢?百思不得其解时收到一封邮件,大致 ...
- linuxc语言图形化编程包含gtk/gtk.h编译总是报错找不到该文件的解决方法
在编译时输入gcc file.c `pkg-config --libs --cflags gtk+-2.0` 注意`不是单引号,和--前均有一个字符 这样问题就结局啦
随机推荐
- 机器学习算法的Python实现 (1):logistics回归 与 线性判别分析(LDA)
先收藏............ 本文为笔者在学习周志华老师的机器学习教材后,写的课后习题的的编程题.之前放在答案的博文中,现在重新进行整理,将需要实现代码的部分单独拿出来,慢慢积累.希望能写一个机器学 ...
- 洛谷P2398 GCD SUM (数学)
洛谷P2398 GCD SUM 题目描述 for i=1 to n for j=1 to n sum+=gcd(i,j) 给出n求sum. gcd(x,y)表示x,y的最大公约数. 输入输出格式 输入 ...
- mac 的全文搜索
grep -Rni "view.proptypes.style" * 需要切换到要搜索的目录在运行
- windows下安装pthreads扩展注意问题
1.php版本必须是ts版本 2.pthreads扩展下载地址 http://windows.php.net/downloads/pecl/releases/pthreads/ 3.把下载的扩展php ...
- java基础-关键词super与this
转发:itbooks this是调用自己本身的构造函数,而super是调用父类中的构造函数. 这两个关键词是用在构造函数中的,这两个关键词的设计也是对封装特性的一种考虑,避免编写不必要的重复代码. c ...
- Python学习笔记(2.1)函数参数练习
关键字参数 和 命名关键字参数 # -*- coding: utf-8 -*- def print_scores(**kw): print(' Name Score') print('-------- ...
- javascript中各类的prototype属性
prototype 作用:获取调用对象的对象原型引用 应用:可以为某对象原型添加方法 例: function getMax() { var max = this[0]; for(var x=0; x& ...
- 数组与集合List的相互转化
数组转化为集合 #此运用的是Arrays中的asList方法,返回一个List集合 *当数组元素为基本数据类型是把整个数组当作一个元素放入List集合中,代码举例: ,,}; List<int[ ...
- css3同心圆闪烁扩散效果
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- MySQL删除数据几种情况以及是否释放磁盘空间【转】
MySQL删除数据几种情况以及是否释放磁盘空间: 1.drop table table_name 立刻释放磁盘空间 ,不管是 Innodb和MyISAM ; 2.truncate table tabl ...