当前位置:  开发笔记 > 编程语言 > 正文

我应该学习GTK +还是GTKMM?

如何解决《我应该学习GTK+还是GTKMM?》经验,为你挑选了4个好方法。

我是一名C#程序员,大约2年前开始使用ubuntu.我想学习C或C++中的GUI编程.我不喜欢单声道,它往往会在我的系统上崩溃.我对C++有基本的了解.我从未在C工作过,但看起来很酷.我应该学习/使用哪个工具包?给每个人的Pro/Cons.谢谢!



1> jonner..:

我可以被指责偏见,因为我确实帮助了gtkmm,但我是用户第一,所以......无论如何,如果你对C++感到满意,我强烈推荐gtkmm.使用gtkmm比使用GTK +更容易进行内存管理,因为使用智能指针自动管理引用计数对象.您还可以将对象实例化为自动变量(例如,在堆栈上),并根据其范围确定其生命周期.因此在实践中,使用gtkmm比使用GTK +更容易避免内存泄漏.

gtkmm相对于GTK +的另一个巨大优势(在我看来)是使用类型安全的信号框架.在GTK +中,你经常需要将事物作为void指针传递,然后将它们转换为你认为应该是的类型.在gtkmm中,您不需要这样做,并且可以利用编译器在信号处理程序上强制执行类型安全.

与C/GTK +相比,另一个重要优势是可以轻松获得新类.在GTK +中,您需要编写大量的样板代码,并且基本上重新实现在C++中作为语言的一部分免费获得的东西(例如继承,构造函数,析构函数等).这更乏味且容易出错.

greyfade提到gtkmm是不完整的,并且他在某种程度上是正确的 - gtkmm并不能完全覆盖GTK + API中的所有内容(尽管它非常接近).但实际上这不是问题,因为您可以直接从gtkmm代码中使用C/GTK + API.这种C兼容性是C++相对于C#或python绑定这样的巨大优势,如果绑定没有覆盖API的一部分,那么你就没有其他选择.

选择GTK +超过gtkmm(IMO)的唯一真正原因是gtkmm有一点额外的开销,因为它是C库顶部的包装器(但这通常只是一个函数调用,这将产生微不足道的影响) ,或者如果你讨厌或不能使用C++.



2> Can Berk Güd..:

如果你是C#程序员,为什么不看看Vala?

我在我的大多数Linux GUI应用程序中使用pygtk,但Python对于我正在进行的项目来说太慢了,所以我试图选择一个GTK +和GTKmm.然后我遇到了Vala.

这是一种非常新的语言,因此文档目前非常有限,但我认为它具有两全其美:C#语法与C速度.



3> greyfade..:

由于C++对你来说比较熟悉,你可能会发现GTKmm更合适,因为你可以使用像RAII这样的习语.不幸的是,GTKmm有点不完整,缺少一些GTK中较少使用的部分.

然而,GTK +本身暴露了一个类似于你在C++中找到的对象模型,但只有C函数.C++中的构造和销毁之类的东西在C API中显式完成,小部件的实例仅通过指针处理.

尝试两者,看看哪个更适合您的项目.



4> River Willia..:

就像许多人所说的那样,Gtkmm确实为您提供了良好的内存管理,引用计数的对象等。但是它确实属于一个部门。文档。整个Gtkmm项目都遭受“ undocumentation”现象的困扰,其中发布(和重新发布到第三者网站上)的文档仅仅是对头文件的javadoc扫描。

只是想让您知道您将要进入的领域。例如,“ 滚动窗口”是Gtkmm中记录最好的类之一。

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有