我应该选择什么:GTK +或Qt?

时间:2009-12-11 10:11:18

标签: linux qt gtk

有人可以建议今天这些图书馆的最佳用途是什么吗?它只是GUI,还是有数据库,XML,网络,线程等支持?

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

最常见的是什么?他们之间有什么区别?为什么你会选择一个而不是另一个?

9 个答案:

答案 0 :(得分:86)

由于您似乎主要针对Linux,因此选择主要取决于您要使用的编程语言。

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

如果您使用C ++编写代码,请转到Qt,否则您将需要Gtkmm(基于GTK +的C ++包装器)

如果您使用Python编码,GTK +和Qt都会对该语言进行绑定:请参阅PyGtkPyQtPySide(诺基亚自己推出的那个)。

如果您使用Java编写代码,那么Qt不再是Nokia discontinued Qt Jambi(Qt的Java绑定)的可行选项。

此外,Qt在其scenegraph QGraphicsScene API,其脚本引擎基于Javascript Core(启动WebKit的引擎),其状态机和动画框架以及declarative UI方面更为一流。

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

如果你专门研究数据库,XML(GTK +有一个XML子集的解析器)和线程(GTK +有GLib)功能,那么Qt将在QtSql中提供所有这些功能,{ {3}}和QtXml

总而言之,我会说Qt是一个肯定的选择。但GTK +也很有能力。

我不确定你会对你的问题得到一个明确的答案,这解释了为什么有些人更喜欢Gnome而不是KDE,反之亦然。 选择最适合您的方式。

PS:我打算也定位Symbian,然后去Qt。

编辑:Qt的优点还有QtWebView:它将Chromium带入您的Qt应用程序以显示网页内容。其他人则使用例如Awesomium或Berkelium将Web内容嵌入到他们的应用程序中。

答案 1 :(得分:38)

我之前使用过GTK +,QT和wxWidgets。这是一个简短的总结:

对于我的第一个跨平台UI项目,我决定选择wxWidgets主要是因为当时许可证不像QT那样限制(QT是GPL,仅适用于Linux),并且它具有特定于平台的UI(与GTK不同)。该项目运作良好,但在其他平台上编译和运行时有很多故障 - 有时候某些事件的启动方式不同等等。 wxWidgets中的GDI也很慢。

接下来我在GT中使用GTK作为一个不同的项目。为此,我使用了python绑定,一切都变得顺畅。我不太喜欢这样的事实,即UI在Windows和Mac上看起来不是原生的,而且当你启动GTK +应用程序时,它总是调试输出CRITICAL警告的负载,似乎可以忽略。 :S

最后,我做了一个非常简单的QT项目,现在诺基亚已经获得了它并且非常出色。最好的三个。首先,如果你不是一个喜欢VI或Emacs的老同学,QtCreator很棒。我真的很喜欢VI并使用它多年,但我更喜欢QtCreator用于C ++ QT项目。关于图书馆,我也非常喜欢文档和提供的API。 QT有插槽和信号的概念,它引入了新的C ++关键字和预处理器。基本上,在阅读完教程后,您将轻松获得它并开始喜欢它。我现在正在做iPhone开发,它确实感觉有点像Cocoa / Interface Builder的UI范例。

总结:我会选择QT。许可证非常好,SDK和文档非常好。

答案 2 :(得分:22)

我从未使用过GTK,但根据我使用Qt的个人经验:

它远远超过简单的GUI。这是一个完整的应用程序框架。我曾经把它想象成C ++的Java库。它提供了您提到的所有内容 - 数据库,XML,网络和线程等。它还提供诸如容器和迭代器之类的东西,以及许多boost库的对应物。

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

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

我没有使用过Qt Creator,但我听过很多关于它的好消息。它是一个与Qt明显高度集成的C ++ IDE。它还有虚假的vim仿真,如果你喜欢那种东西总是很好的!

Qt使用qmake进行构建配置。我发现这比编写自己的makefile要好得多。我不知道GTK用于构建什么。

我发现Qt最初有点遗憾的是它对预处理器宏的大量使用。信号/插槽系统为您的应用程序中的事件/消息传递提供了一个很好的机制,但它确实感觉有点像魔术,如果您愿意,可能无法轻松移植到其他工具包。 moc(元对象编译器),虽然我不完全确定它的作用,但感觉有点像魔术在幕后发生。

总而言之,我会推荐Qt,特别是如果你正在学习。它有非常棒的文档和一个很好的IDE,以及繁忙的论坛。您将能够使用它快速构建C ++应用程序,特别是使用4.7中的QML。

答案 3 :(得分:9)

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

另一方面,Gtk在Linux世界中更常见,因此您可以在网络上获得更多帮助。 Gtk广泛存在的原因可能与Gnome和Ubuntu有关,而不是技术优点,但如果你想让你的软件与这两者很好地融合,你就可以用Gtk更容易实现。

答案 4 :(得分:7)

Qt肯定有一个可靠的数据库,网络,线程支持等......它比跨平台的GUI做得更多(并且它完成了大部分工作)。

我推荐它超过GTK +。

答案 5 :(得分:3)

只需将QT优势添加到其他答案中.QT具有很好的文档,它自己的IDE & GUI creator并且通过一些新概念(如插槽/信号(基本上是事件))增强了C ++。

我不是GTK开发人员,所以我无法将它们与GTK世界进行比较:(

答案 6 :(得分:3)

Qt的。它不仅面向对象,而且是“良好的”面向对象。 它基于C ++的“子集”,不依赖于C ++的模糊性(但如果你喜欢受虐狂,你可以坚持使用它们。)。

现在诺基亚买了它(实际上诺基亚做了〜2/3年前)它有强劲的势头。它将出现在所有诺基亚和英特尔移动设备(智能手机,上网本,平板电脑)中。

它是KDE的支柱,所以它非常成熟,但是它以非常灵活的方式设计,这使得有可能支持今天所有最新的“很酷的东西”,那就是更多 - 然后只是GUI < / strong>框架应该有。

去吧。

答案 7 :(得分:1)

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

答案 8 :(得分:1)

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

qt-project.org