我应该select什么:GTK +或Qt?

有人可以build议今天这些图书馆有什么最好的用途吗? 它只是graphics用户界面,还是他们有数据库,XML,networking,线程等支持呢?

我正在阅读关于他们,并考虑开始学习/使用其中之一。

什么是最常见的? 他们之间有什么区别? 为什么你会select一个呢?

由于您似乎主要针对Linux,所以select主要取决于您要使用的编程语言。

如果你用C编写代码,那么显然是用GTK +

如果你用C ++编写代码,去Qt,否则你将需要Gtkmm (一个通过GTK +的C ++包装器)

如果你用Python编写代码,GTK +和Qt都有语言的绑定:请参阅PyGtk , PyQt和PySide (诺基亚自己发布的)。

如果你用Java编写代码,Qt就不再是一个可行的select,因为诺基亚终止了Qt Jambi ( Qt的Java绑定)。

此外,Qt在QGraphicsScene API,其JavaScript脚本引擎(WebKit的引擎),状态机和animation框架,以及声明式UI上构build的脚本引擎更为顶尖。

GTK +并没有提供那么多,尽pipe你可以使用Clutter 。

如果你正在专门研究数据库,XML(GTK +有一个XML子集的parsing器)和线程(GTK +具有GLib )function,那么Qt将提供QtSql , QtXml和QtConcurrent中的所有function。

总而言之,我会说Qt是一个肯定的select。 但是GTK +也是非常有能力的。

我不确定你的问题会得到一个清晰的答案,这就解释了为什么有些人更喜欢Gnome而不是KDE,反之亦然。 select最适合你的东西。

PS:我打算也瞄准Symbian,然后去Qt。

编辑:Qt也是很棒的东西是QtWebKit:它将WebKit带入你的Qt应用程序。 其他人则使用Awesomium或Berkelium将WebKitembedded到他们的应用程序中。

我以前使用过GTK +,QT和wxWidgets。 这里有一个简要的总结:

对于我的第一个跨平台UI项目,我决定去wxWidgets,主要是因为当时许可证不像QT(QT是GPL,仅用于Linux)那么严格,并且它具有特定于平台的UI(与GTK不同)。 这个项目运行得很好,但是在其他平台上有好几个小问题能够正确编译和运行 – 有时候一些事件被不同地引发了。 在wxWidgets中的GDI也很慢。

接下来,我使用GTK为Python中的不同项目。 为此,我使用了python绑定,一切工作或多或less地顺利进行。 我不太喜欢这个界面在Windows和Mac上看起来不是本机的,而且当你启动一个GTK +应用程序的时候,它总是debugging输出CRITICAL警告,看起来很好,可以忽略。 :S

最后,我做了一个非常简单的QT项目,诺基亚已经收购了它,并且非常出色。 三者中最好的。 首先,如果你不是一个喜欢VI或者Emacs的老年学生,那么QtCreator是非常棒的。 我真的很喜欢VI并使用了它,但是我更喜欢QtCreator for C ++ QT项目。 关于图书馆,我也很喜欢提供的文档和API。 QT有插槽和信号的概念,引入了新的C ++关键字和预处理器。 基本上,在阅读完一个教程之后,你会很容易地得到它,并开始喜欢它。 我现在正在做iPhone的开发,它有点像cocoa/ Interface Builder的UI范例。

总结:我会去QT手中。 许可证非常好,SDK和文档非常好。

我从来没有使用GTK,但从我个人使用Qt的经验:

它不仅仅是简单的GUI。 这是一个完整的应用程序框架。 我曾经把它看作C ++的Java库。 它提供了所有你所提到的 – 数据库,XML,networking和线程等等。 它还提供诸如容器和迭代器之类的东西,以及一些boost库的对应物。

开始使用Qt时最让我印象深刻的是极其广泛的文档。 您将得到一个名为Qt Assistant的程序,该程序在桌面上提供了完整的索引和可search的API文档,以及大量的代码示例和教程。 我发现每次searchWeb信息都有很大的不同。 当你需要记住一个方法签名时,非常快速的访问。

我不确定哪一个是最常见的; 这可能很难准确衡量。 他们当然都很受欢迎。 由于Gnome是Ubuntu的默认桌面,Gnome位于GTK之上,显然有着广泛的用途。 当然,KDE也很受欢迎。 诺基亚正在大力推动Qt在移动领域的发展 – 例如,在新款N900上使用的Maemo OS即将转向Qt作为默认工具包(目前​​是GTK)。我相信Qt也将很快成为默认工具包Symbian OS。

我还没有使用过Qt Creator,但是我已经听到了许多好消息。 这是一个C ++ IDE,与Qt有着明显的重合。 它也有假vim仿真,如果你喜欢那种东西,总是很好的!

Qt使用qmake进行构buildconfiguration。 我发现这比编写你自己的makefile文件要好得多。 我不知道GTK用于构build什么。

我首先发现的一些与Qt有点关系的东西是预处理macros的大量用途。 信号/插槽系统为您的应用程序中的事件/消息传递提供了一个很好的机制,但是它确实感觉有点像魔术,如果您想要的话,它可能不容易移植到另一个工具包中。 另外moc(元对象编译器),虽然我不完全确定它的作用,但也感觉有点像幕后魔法。

总而言之,我会推荐Qt,特别是如果你正在学习。 它有真正令人惊叹的文档和一个不错的IDE,以及繁忙的论坛。 您将能够非常快速地构buildC ++应用程序,特别是在4.7版QML中。

这可能取决于你想要做什么。 我会推荐Qt,因为它不仅仅是GUI,它有很好的Python绑定(Gtk也是如此),GUI库本身(主观上讲)比Gtk更愉快。

另一方面,在Linux世界中,Gtk更常见,所以你可能在networking上获得更多的帮助。 Gtk广泛传播的原因可能与Gnome和Ubuntu有关,而不是技术上的优势,但是如果你想让你的软件与这两者很好地融合,你可以通过Gtk更轻松地实现。

Qt对于一个肯定有坚实的数据库,networking,线程支持等…它做了很多,然后只是跨平台的GUI(它大部分它很好)。

我build议通过GTK +。

只要将QT优势添加到其他答案中,QT就拥有出色的文档,自己的IDE和GUI创build者,并使用插槽/信号(基本上是事件)等一些新概念来增强C ++。

我不是一个GTK开发者,所以我不能比较那些GTK世界:(

Qt的。 它不仅是面向对象的,而且是“好”的面向对象。 它基于C ++的一个“子集”,它不依赖于C ++的默默无闻(但是如果你喜欢受虐狂,你可以坚持下去)。

诺基亚现在拥有强劲的势头(实际上诺基亚在2/3年前就已经这么做了)。 这将是所有诺基亚和英特尔移动设备(智能手机,上网本,平板电脑)。

它是KDE的中坚力量,所以它非常成熟,但是它的devise非常灵活,可以支持所有最新的“酷东西”,即一个更加正义的GUI框架。

去吧。

看起来诺基亚即将在各地使用Qt,就像在Maemo上一样

如果您希望自己的应用在iOS,Android,Blackberry,其他移动平台,Windows,Mac OSX和Linux上运行,请使用Qt。

qt-project.org