Kre*_*dns 10 c c++ gtk user-interface gtkmm
我是一名C#程序员,大约2年前开始使用ubuntu.我想学习C或C++中的GUI编程.我不喜欢单声道,它往往会在我的系统上崩溃.我对C++有基本的了解.我从未在C工作过,但看起来很酷.我应该学习/使用哪个工具包?给每个人的Pro/Cons.谢谢!
jon*_*ner 35
我可以被指责偏见,因为我确实帮助了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++.
gre*_*ade 12
由于C++对你来说比较熟悉,你可能会发现GTKmm更合适,因为你可以使用像RAII这样的习语.不幸的是,GTKmm有点不完整,缺少一些GTK中较少使用的部分.
然而,GTK +本身暴露了一个类似于你在C++中找到的对象模型,但只有C函数.C++中的构造和销毁之类的东西在C API中显式完成,小部件的实例仅通过指针处理.
尝试两者,看看哪个更适合您的项目.
我建议用 gedit学习vala。
http://www.valaide.org/doku.php:VALA
https://launchpad.net/valable:Eclipse
http://code.google.com/p/vtg/:Gedit
http://abderrahim.arablug.org/blog/ : anjuta
| 归档时间: |
|
| 查看次数: |
11119 次 |
| 最近记录: |