我是一个C#程序员使用Ubuntu大约2年前谁开始。我想学习用C或C ++ GUI编程。我真的不喜欢单,也容易崩溃我的系统上。我有C ++的一个基本的了解。我从来没有使用C的工作,但它看起来很酷。我应该了解哪些工具/使用?各举的Pro /缺点。谢谢!

有帮助吗?

解决方案

由于C ++是你更熟悉,可能会发现gtkmm的是一个更好的贴合,因为可使用成语像RAII。不幸的是,gtkmm的是有点不完整的,并且缺少几个GTK的较少使用的部分。

GTK +自身,但是,本质上暴露类似于您在C ++中查找,但只有C函数的对象模型。用C之类的东西建设和破坏++是本C API在显式执行和小部件的实例通过指针进行专门处理。

试用这两个,看看哪些适合你的项目更好。

其他提示

我可以指责的偏见,因为我确实有助于促进gtkmm的,但我是一个用户第一,所以......在任何情况下,我会强烈建议gtkmm的,如果你熟悉C ++。内存管理是gtkmm的比GTK +,因为引用计数的对象与智能指针自动管理要容易得多。你也可以实例化对象作为自动变量(例如,在堆),且具有它们的寿命可以通过范围来确定。因此,在实践中,它更容易避免与gtkmm的内存泄漏比GTK +。

另一个巨大优点gtkmm的过GTK +(在我的意见)的是使用一种类型的安全信号框架。在GTK +,你需要不断通过事情空指针,然后四处投他们你认为他们应该是类型。在gtkmm的,你不需要做到这一点,可以在你的信号处理程序利用编译器强制执行措施的类型安全的。

在C / GTK +另一个大优点是易于导出新的类。在GTK +,你需要写很多的样板代码,基本上重新实现你在C ++自由作为语言的一部分的东西(如继承,构造函数,析构函数等)。这是更繁琐和容易出错。

greyfade提到gtkmm的是不完整的,而且他是正确的,以在一定程度上 - gtkmm的不包括GTK + API中绝对一切(虽然它变得非常接近)。但在实践中,这不是一个问题,因为你总是可以直接从您的gtkmm代码中使用C / GTK + API。这个C兼容性是在像C#或Python绑定,你就没有选择,如果绑定没有涵盖API的一部分的C ++一个巨大的优势。

唯一的真正原因在gtkmm的(IMO)选择GTK +是gtkmm的有一点点额外的开销,因为它是在C库之上的包装(但这通常只是一个函数调用,这都将有可忽略的影响),或者如果你讨厌或不能使用C ++。

如果你是C#程序员,你为什么不看看瓦拉的<? / p>

我用的PyGTK的大部分我的Linux GUI应用程序,但是Python只是对我的工作,现在项目的速度太慢了,所以我是在挑GTK +和gtkmm的之一。然后我遇到瓦拉。

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

就像许多人所说的,gtkmm的确实为您提供良好的内存管理,引用计数的对象,等它跌下来的一个部门,但。文档。 gtkmm的项目的整体从“undocumentation”现象,其中贴(转贴,并在第三方网站)文档简直是头文件的javadoc的扫描受到影响。

只是想让你知道你会陷入。例如,滚动窗口是在gtkmm的更好的记录类之一

你有没有看QT?点击 这是很好C ++设计,跨平台和LGPL

我觉得去将首先学习的gtkmm的最佳途径!您正在使用的gtkmm的基本完成后,GTK +应该是相当简单的学习(前提是你知道C和舒适的指针)。

在情况下,你不知道C,你可以通过阅读C程序设计语言由丹尼斯里奇学得很快。

我建议你先学习gtkmm的,因为它是专门为C ++,这有点类似于C#,因为两者都是面向对象设计的,所以gtkmm的会比较容易先学习比GTK +。

gtkmm的之后,可以在移动到GTK +

大多数开源企业的使用GTK +,而不是gtkmm的,所以GTK +是欢颜学习!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top