K.I.S.S. – 简单哲学 Linux, Freedom, Arch, Python, Gtk+, C … Keep It Simple, Stupid!

16七/109

GtkApplication – GTK+ 3 中的 Application 支持

+ 3 在紧锣密鼓的开发之中,虽然说 3.0 版本相对于 + 2 在编程方面的改变并不大,不过仍然有些改变是和 + 使用者密切相关的,比如新加入的 GtkApplication 类。

大家知道开始学习 GTK+ 的一个难点就是莫名其妙的 gtk_init()、gtk_main(),以及 quit、destroy 等信号的区别之类的,简单来说,一个 Hello World 程序的构建过程很让人困惑,感觉就像记住了一个模板,每次都要写一次。

GTK+ 3 为了解决这个问题,抽象出了 GtkApplication 这个类,那么一切都变得容易理解起来:gtk_init() 就是 GtkApplication 的构造函数,现在只需要调用 gtk_application_new() 就可以,gtk_main() 现在变成了 gtk_application_run(),意义很明显,而程序的退出也只需要连接 GtkApplication 类的 quit 信号即可。

GtkApplication 默认自带一个 GtkWindow,可以通过 gtk_application_get_window() 获得,因此一个新的 Hello World 看起来可能是这样:

#include <gtk/gtk.h>
int
main (int argc, char **argv)
{
  GtkApplication *app;
  GtkWindow *window;

  app = gtk_application_new ("org.gtk.Example", &argc, &argv);

  window = gtk_application_get_window (app);
  gtk_container_add (GTK_CONTAINER (window), gtk_label_new ("Hello world"));
  gtk_widget_show_all (GTK_WIDGET (window));

  gtk_application_run (app);

  return 0;
}

怎么样,是不是简单明了得多?

更多关于 GtkApplication 类的信息可以参照 GTK+ Reference Manual

原创文章,转载请注明: 转载自K.I.S.S. - 简单哲学

本文链接地址: GtkApplication – GTK+ 3 中的 Application 支持

分享家:Addthis中国

你可能对这些感兴趣:

  1. Linux下国际化编程(Gettext、i18n)
  2. 在自己的 GTK+ 程序中加入 RGBA 透明支持
  3. 使用 gtkaml 编写 GTK+ 界面

喜欢这个文章吗?

考虑订阅我们的RSS Feed吧!

标签: 发表评论
评论 (9) 引用 (0)
  1. 现在开始期待 基于GTK4的Gnome 4……GTK这样每版发明一次轮子的做法让人很失望。

  2. Qt为了库的二进制兼容,只能增加新C++类,或者为原有的类增加静态方法。
    一旦有类virtual成员函数的改变,将不能保证之前写的程序也能在新版本的so文件下运行。
    所以送Qt3->4的时候,就就把原先的类加了Q3前缀移入qt3support并以基于Qt4实现代理模式。
    GTK是C语言的,就没有这方面的约束了,只要原先导出函数都能工作即可向后兼容。

  3. 還是有一樣的問題的. 放在 structure 中的 field 只要一改變, 一樣是有 binary incompatible 的問題的.

  4. 嗯,最近脑袋才开窍,原来这个GtkApplication是用来替代libgnome的!


Leave a comment

(required)

还没有引用.