原本由于项目需求在 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 (一)的更多相关文章

  1. Linux 下从头再走 GTK+-3.0 (五)

    实践中表明,纯粹利用 gtk 函数来创建 UI 是很繁琐的事,需要编写很多代码.怎样才能快速统一的建立 UI 布局呢? 可喜的是 GTK 提供了一个 GtkBuilder 用于快速创建界面.它读取一个 ...

  2. Linux 下从头再走 GTK+-3.0 (三)

    之前我们为窗口添加了一个按钮,接下来让这个按钮丰富一点.并给窗口加上图标. 首先创建 example3,c 的源文件. #include <gtk/gtk.h> static void a ...

  3. Linux 下从头再走 GTK+-3.0 (六)

    在 GTK3 中增加了一个 GtkApplicaton 类,便于我们处理多窗口程序,同时有了 GtkApplication 我们也更容易创建灵活,易用,界面美观的应用程序. 在前面的几个例子中,演示了 ...

  4. Linux 下从头再走 GTK+-3.0 (四)

    实际的应用中,往往有很多个控件, 同样GTK提供了很多种布局方案,Box, Fixed , Table , Grid 等. 接下来试试网格布局 Grid. 我们创建 example4.c ,内容如下: ...

  5. Linux 下从头再走 GTK+-3.0 (二)

    仅仅创建一个空白窗口是不够的,下面我们为创建的窗口添加一个按钮. 以 Hello,World!为例. 首先创建一个源文件:example2.c 内容如下. #include <gtk/gtk.h ...

  6. Linux下安装二进制版mysql-8.0.15

    1.添加用户## 添加用户组groupadd mysql## 添加用户,指定用户home目录useradd -g mysql mysql -d /data/mysql## 解压下载的mysql二进制包 ...

  7. linux下安装mysql5.7(centos6.0)

    注:因为网络原因,这个mysql安装是我以前在学校的时候找到的一个安装包,不过也找到了下载的地址:http://www.itmop.com/downinfo/143061.html下载完成后,把文件上 ...

  8. 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 ...

  9. linux下使用yum安装新版php7.0

    这两天又装了一下虚拟机,又要编译lnmp,还要弄各种拓展,很麻烦,能不能直接yum安装呢?答案是可以的! 1.首先要更新yum源,不然是默认的老版本,一般都在5.6及以下,但是php7都出来好久了,性 ...

随机推荐

  1. 分布式环境下rabbitmq发布与订阅端

    假设rabbitmq配置了集群,且客户端连接rabbitmq-server通过lvs实现HA但一般情况下不建议做LB.在分布式系统的环境下,由于节点的非预知性,使用spring amqp模板进行配置不 ...

  2. HTML5 Canvas 高仿逼真 3D 布料图案效果

    HTML5 规范引进了很多新特性,其中最令人期待的之一就是 Canvas 元素,HTML5 Canvas 提供了通过 JavaScript 绘制图形的方法,非常强大.下面给大家分享一个 HTML5 C ...

  3. FROONT – 超棒的可视化响应式网页设计工具

    FROONT 是一个基于 Web 的设计工具,在浏览器中运行,使得各类可视化设计的人员都能进行响应式的网页设计,即使是那些没有任何编码技能的设计师.FROONT 使得响应式网页设计能够可视化操作,能够 ...

  4. HTML5基础之textarea 和lable

    HTML基础:表单<form/>中文本域textarea 和lable <textarea rows="行数" cols="列数">文本 ...

  5. 浅谈-js递归函数

    所谓的递归函数就是在函数体内调用本函数.使用递归函数一定要注意,处理不当就会进入死循环.递归函数只有在特定的情况下使用 ,比如阶乘问题 下面我们就做一个10以内的阶乘试试看吧: [Ctrl+A 全选 ...

  6. 一个类似backbone路由的纯净route ( 前端路由 客户端路由 backbone路由 )

    大家用backbone.angular,可能都习惯了内置的路由,这两个框架的路由都是非常优秀的,强大而简单. 客户端(浏览器)路由原理其实比较简单,其实就是监听hash的变化. 在之前的架构探讨中,说 ...

  7. CSS3绘制六边形

    因为很简单,所以先总结一下:使用CSS3绘制六边形主要使用伪类:before和:after在源元素之前和之后再绘制两个元素,并利用css3的边框样式,将这两个元素变成三角形放置在源元素的两端即可. ( ...

  8. iOS 正则 检测是否为手机号

    - (BOOL)validateMobile:(NSString *)mobileNum { NSString *regex = @"^1[3|5|7|8][0-9]\\d{8}$" ...

  9. sharepoint2010如何本地化WebPart的Category、WebDisplayName 和 WebDescription 属性

    在项目中经常需要实现多语言其中包括webpart的属性也需要.那么如何实现呢? 首先需要资源文件,利用资源文件实现语言的翻译,如下图: 创建好资源后,下面我们来实现webpart属性的多语言.方法代码 ...

  10. SharePoint 2013 内容部署报错

    错误信息 一 Export ran out of memory while compressing a very large file. To successfully export, turn co ...