Linux 下从头再走 GTK+-3.0 (一)
原本由于项目需求在 Linux 下学习过一段时间的 GTK+2.0 图形开发,时隔一段时间,想真正深入学习一下 GTK 。
这次直接从头学习 GTK+-3.0 ,并写下博文便于日后查看,也方便新手入门。
安装环境参考:
Fedora:http://www.cnblogs.com/watsonlong/archive/2011/04/06/2006989.html
Ubuntu:http://www.cnblogs.com/niocai/archive/2011/07/15/2107472.html
Arch :直接执行 sudo pacman -S gtk3 即可。
注意采用的是GTK3,上文中大部分是GTK2,注意同样的方式安装GTK3。
首先学习到的便是创建一个空白的窗口。我们创建一个名为 example.c 的源文件。内容如下
#include <gtk/gtk.h> //每个GTK程序都要包含的头文件,里面申明了很多类型,函数原型等 static void activate (GtkApplication *app , gpointer data)
{
GtkWidget *window; //申明一个窗口 window = gtk_application_window_new(app); //为app创建一个窗口 gtk_window_set_title(GTK_WINDOW(window) , "Application"); //设置窗口的标题
gtk_window_set_default_size(GTK_WINDOW(window) , , ); //设置窗口默认大小为长宽各200像素
gtk_widget_show_all(window); //显示窗口
} int main(int argc , char **argv) //主函数
{
GtkApplication *app; //申明创建一个 GtkApplicatin对象名为app
int app_status; //用于拿到app 运行结束后的返回值 app = gtk_application_new("org.rain.gtk" , G_APPLICATION_FLAGS_NONE); //创建一个application
g_signal_connect(app , "activate" , G_CALLBACK(activate) , NULL); //连接信号,初始化app时,调用 activate 函数
app_status = g_application_run(G_APPLICATION(app) , argc , argv); //运行app g_object_unref(app); //销毁app return app_status;
}
如下方式编译源文件,并执行生成的example可执行文件。
gcc example.c `pkg-config --cflags --libs gtk+-3.0` -Wall -o example
./example
运行结果如下:
aaarticlea/png;base64,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" alt="" />
Linux 下从头再走 GTK+-3.0 (一)的更多相关文章
- Linux 下从头再走 GTK+-3.0 (五)
		
实践中表明,纯粹利用 gtk 函数来创建 UI 是很繁琐的事,需要编写很多代码.怎样才能快速统一的建立 UI 布局呢? 可喜的是 GTK 提供了一个 GtkBuilder 用于快速创建界面.它读取一个 ...
 - Linux 下从头再走 GTK+-3.0 (三)
		
之前我们为窗口添加了一个按钮,接下来让这个按钮丰富一点.并给窗口加上图标. 首先创建 example3,c 的源文件. #include <gtk/gtk.h> static void a ...
 - Linux 下从头再走 GTK+-3.0 (六)
		
在 GTK3 中增加了一个 GtkApplicaton 类,便于我们处理多窗口程序,同时有了 GtkApplication 我们也更容易创建灵活,易用,界面美观的应用程序. 在前面的几个例子中,演示了 ...
 - Linux 下从头再走 GTK+-3.0 (四)
		
实际的应用中,往往有很多个控件, 同样GTK提供了很多种布局方案,Box, Fixed , Table , Grid 等. 接下来试试网格布局 Grid. 我们创建 example4.c ,内容如下: ...
 - Linux 下从头再走 GTK+-3.0 (二)
		
仅仅创建一个空白窗口是不够的,下面我们为创建的窗口添加一个按钮. 以 Hello,World!为例. 首先创建一个源文件:example2.c 内容如下. #include <gtk/gtk.h ...
 - Linux下安装二进制版mysql-8.0.15
		
1.添加用户## 添加用户组groupadd mysql## 添加用户,指定用户home目录useradd -g mysql mysql -d /data/mysql## 解压下载的mysql二进制包 ...
 - linux下安装mysql5.7(centos6.0)
		
注:因为网络原因,这个mysql安装是我以前在学校的时候找到的一个安装包,不过也找到了下载的地址:http://www.itmop.com/downinfo/143061.html下载完成后,把文件上 ...
 - linux下如何编译安装gcc-8.3.0
		
1. 获取源码 wget https://mirrors.ustc.edu.cn/gnu/gcc/gcc-8.3.0/gcc-8.3.0.tar.xz -P ~ tar xvf gcc-8.3.0.t ...
 - linux下使用yum安装新版php7.0
		
这两天又装了一下虚拟机,又要编译lnmp,还要弄各种拓展,很麻烦,能不能直接yum安装呢?答案是可以的! 1.首先要更新yum源,不然是默认的老版本,一般都在5.6及以下,但是php7都出来好久了,性 ...
 
随机推荐
- 使用ADO.NET执行SQL脚本
			
public void ExecuteSql(SqlConnection connection, string sqlFile) { string sql = ""; using ...
 - NProgress.js template
			
NProgress.js:加载进度条:http://ricostacruz.com/nprogress/ 基础的这几个方法 这个网站上都有 我在一个地方看到这个代码 NProgress.configu ...
 - require.js的一些了解
			
想了解一下的可以轻轻点开链接,想了解的可以点开链接,http://mp.weixin.qq.com/s?__biz=MzIxMTQyNzExNw==&mid=100000042&idx ...
 - jQuery Transit 过渡效果
			
jQuery Transit 使用 CSS3 的新特性来实现过渡效果,比默认的.animate方法要顺畅得多. 因为使用 CSS3 进行过渡效果,所以对不支持 CSS3 的浏览器效果有所下降. 语法和 ...
 - jQuery Flat Shadow – 轻松实现漂亮的长阴影效果
			
长阴影其实就是扩展了对象的投影,感觉是一种光线照射下的影子,通常采用角度为 45 度的投影,给对象添加了一份立体感.长阴影快速发展为流行的设计趋势,并经常被应用到扁平设计方案的对象.更详细的介绍可以阅 ...
 - jQuery立体式数字滚动条增加
			
1.html结构 <div class="numberRun1"></div> 2.js <script type="text/javasc ...
 - 高性能javascript学习笔记系列(2)-数据存取
			
参考 高性能javascript Tom大叔深入理解javascript系列 相关概念 1.执行上下文 当控制器转到ecmascript可执行代码的时候,就会进入一个执行上下文,执行上下文是以堆栈 ...
 - js编写当天简单日历
			
之前一直很想用javascript写一个日历,但是因为完全没有好的思路, 所以迟迟没有尝试.最近在网上刚好看到用javascript编写的简单日历的例子,代码量虽然不大, 但是我觉得很好地阐述了js日 ...
 - 学习zepto.js(对象方法)[1]
			
zepto也是使用的链式操作,链式操作:函数返回调用函数的对象. 但并不是所有的对象方法都可以进行链式操作,举几个例子:.size(),.html()|.text()//不传参数的情况下; 若非特殊说 ...
 - 使用MDK3探测隐藏SSID名称
			
先将网卡设置为监听模式. airmon-ng start wlan0 扫描附近无线网络,找出隐藏SSID的AP. airodump-ng wlan0mon 这里用下图搜到的第一个隐藏SSID做测试. ...