GTK重拾--02

简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/49736673 (一):写...
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/49736673

(一):写在前面

在第一节中,已经体会到了GTK桌面开发的效果,同时也了解到有很多使用GTK库开发的例子.同时上一节我们使用GTK开发了一个简单的窗口程序,在这一节中,我们就进入到窗口的学习.窗口是承载多个组件的容器.在窗口中我们可以放置菜单,工具等组件.同时,在这一小节的开始,我们先学会使用一个IDE来编写GTK程序,这样,开发起来比较简单方便,因为他有一些提示功能等.

(二):CodeBlocks编写GTK程序

1:下载安装CodeBlocks

CodeBlocks是一个非常好用的C/c++编程IDE,在CodeBlocks中,可以进行Qt开发,GTK开发,嵌入式开发等等.至于CodeBlocks的安装,很简单,直接从官网http://www.codeblocks.org 下载安装即可.安装完成后,打开我们的CodeBlocks.

CodeBlocks

2:CodeBloks开发GTK程序

  1. 选择File->New->Project..
  2. 在弹出的对话框中选择GTK+ Project
  3. 选择下一步,填写项目的名称以及项目所在路径,在这里我们的项目名称为”GTkWindow”
  4. 选择下一步,选择编译器为GNU GCC Compiler
  5. 最后点击finish

完成之后,在我们的CodeBlocks中的左边就会出现源码树,是这样子的:

sourcetree

在main.c中,CodeBlocks为我们新建了一个窗口,我们可以删除编写我们自己的程序,也可以接着修改这个程序.

3:编写程序

在这里,我们将main.c里面的程序清空,将我们上一节的代码复制粘贴到这里.

#include <gtk/gtk.h>

int main(int argc,char *argv[])
{
    GtkWidget *window;

    gtk_init(&argc,&argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    gtk_widget_show(window);

    gtk_main();

    return 0;
}

编写完成之后,看下面这张图:

tools

我用红色笔圈出来的左边这个是编译,后面这个是运行,所以我们先点击左边这个,再点击后面这个就能够正常运行我们的程序了.

如果程序编写错误,编译的时候,就会报错,可以根据错误定位到哪一行出错了,非常方便.

(四):GTK+窗口

我们可以通过GTK+-2.0的API来查看GtkWindow的属性和函数.

https://developer.gnome.org/gtk2/stable/GtkWindow.html

下面我们根据API来构造一个窗口程序.

#include <gtk/gtk.h>

//制作应用图标
GdkPixbuf *create_pixbuf(const gchar *filename)
{
    GdkPixbuf *pixbuf;
    GError *error = NULL;

    pixbuf = gdk_pixbuf_new_from_file(filename,&error);

    if(!pixbuf)
    {
        fprintf(stderr,"%s\n",error->message);
        g_error_free(error);
    }

    return pixbuf;
}

int main(int argc,char *argv[])
{
    GtkWidget *window;

    gtk_init(&argc,&argv);

    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    //设置标题
    gtk_window_set_title(GTK_WINDOW(window),"Center");
    //设置默认大小
    gtk_window_set_default_size(GTK_WINDOW(window),230,150);
    //设置位置
    gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);

    //设置程序图标
    gtk_window_set_icon(GTK_WINDOW(window),create_pixbuf("icon.png"));
    gtk_widget_show(window);

    //注册关闭事件
    g_signal_connect_swapped(G_OBJECT(window),"destroy",G_CALLBACK(gtk_main_quit),NULL);

    gtk_main();

    return 0;
}

注意,这里的icon.png我们需要这样引入,将icon.png复制到工程根文件夹里面,然后,在CodeBlocks中的项目名称上右键->Add files->找到icon.png,添加即可.

这样完成之后,就会生成一个带有图标的在屏幕中间的窗口.

(五):多说一句

对于GtkWindow有很多函数和属性,但是这里我们肯定不可能一下就全都记住,我们需要掌握的是操作GtkWindow的方法,这样就能够举一反三,通过API就会使用别的方法去操作窗口了.

(六):写在后面

这个世界不是因为你能做什么,而是你该做什么。 -- 马云

注意:源码我已经上传到我的Github:

源码下载

目录
相关文章
|
2月前
|
Ubuntu 编译器 C语言
Ubuntu 源码编译指定版本 make:神秘代码背后的激情冒险,等你来战!
【9月更文挑战第8天】在Ubuntu中,编译指定版本的源码`make`是一项挑战但也极具价值的任务。它允许我们根据特定需求定制软件,提升性能与功能适配。首先需安装必要工具包如GCC等;接着下载所需源码并阅读相关文档以了解编译要求。通过运行`./configure`、`make`及`sudo make install`命令完成编译安装流程。过程中可能遇到依赖项缺失或编译选项设置不当等问题,需根据错误提示逐一解决。对于大型项目,可利用多核编译加快速度。掌握这一技能有助于更好地探索开源世界。
46 2
|
存储 XML 安全
GTK入门
GTK入门
310 0
|
开发者 C++
Qt Marketplace -- 强大丰富的Qt市场
Qt Marketplace -- 强大丰富的Qt市场
398 0
|
Ubuntu Linux 网络安全
Ubuntu抛弃了Untiy转向Gnome,美化之路怎么办?不用怕咱一步一步大变身!
跨平台系列汇总:http://www.cnblogs.com/dunitian/p/4822808.html#linux 常用软件安装+系统软件卸载:http://www.cnblogs.com/dunitian/p/6670560.
1045 0
|
Ubuntu
GTK+重拾--10 GTK+中的组件(二)
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/50442630 (一):写在前面 在上面一个小节中,我们讲解了在GTK+2.0中的一些常用的构件,在这一小节中,我们将继续学习GTK+中常用的稍微复杂的构件,这里我们主要是学习GtkComboBox,GtkEntry,GtkIconView,GtkImage,GtkSeparator,GtkStatusBar。
824 0
GTK+重拾--09 GTK+中的组件(一)
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/50426457 (一):写在前面 在这篇文章中主要介绍了GTK+程序中的各种构件,这是讲解构件的第一个部分,另外一部分将在下一个小节中讲到。
981 0
GTK+重拾--07 GTK+中的事件
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/50318575 (一):写在前面 在这一个小节中,我们主要是学习GTK+2.0中最重要的部分,就是信号和事件。
927 0