有人可以建议今天这些图书馆的最佳用途是什么吗?它只是GUI,还是有数据库,XML,网络,线程等支持?
我正在阅读他们,并考虑开始学习/使用其中一个.
什么是最常见的?他们之间有什么区别?你为什么选择一个而不是另一个?
由于您似乎主要针对Linux,因此选择主要取决于您要使用的编程语言.
如果你用C编码,那么显然是去GTK +
如果用C++编写代码,请选择Qt,否则你将需要Gtkmm(一个基于GTK +的C++包装器)
如果您使用Python编写代码,GTK +和Qt都会对该语言进行绑定:请参阅PyGtk,PyQt和PySide(诺基亚自己推出的那个).
如果您使用Java编写代码,Qt不再是一个可行的选择,因为诺基亚停止了Qt Jambi(Qt的Java绑定).
此外,Qt在其场景图QGraphicsScene API上更为一流,它的脚本引擎是基于Javascript Core(启动WebKit的引擎),其状态机和动画框架以及声明性UI构建的.
虽然你可以使用Clutter,但GTK +并没有提供那么多.
如果您专门研究数据库,XML(GTK +有一个XML子集的解析器)和线程(GTK +具有GLib)功能,那么Qt将提供QtSql,QtXml和QtConcurrent中的所有功能.
总而言之,我会说Qt是一个肯定的选择.但是GTK +也非常强大.
我不确定你会为你的问题得到一个明确的答案,这解释了为什么有些人更喜欢Gnome而不是KDE,反之亦然.选择最适合您的方式.
PS:我打算也定位Symbian,然后去Qt.
编辑:Qt也很棒的东西是QtWebView
:它将Chromium带入您的Qt应用程序以显示Web内容.其他人使用例如Awesomium或Berkelium将Web内容嵌入到他们的应用程序中.
我之前使用过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和文档非常好.
我从未使用过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操作系统.
我没有使用过Qt Creator,但我听说过很多好事.它是一个与Qt明显高度集成的C++ IDE.它还有虚假的vim仿真,如果你喜欢那种东西总是很好!
Qt使用qmake进行构建配置.我发现这比编写自己的makefile要好得多.我不知道GTK用于构建什么.
我最初发现Qt的一些事情是它对预处理器宏的大量使用.信号/插槽系统为您的应用程序中的事件/消息传递提供了一个很好的机制,但它确实感觉有点像魔术,如果您愿意,可能无法轻松移植到其他工具包.moc(元对象编译器),虽然我不完全确定它的作用,但感觉有点太像魔术在幕后发生了.
总而言之,我会推荐Qt,特别是如果你正在学习.它有非常棒的文档和一个很好的IDE,以及繁忙的论坛.您将能够非常快速地构建C++应用程序,特别是使用4.7中的QML.
这可能取决于你想做什么.我推荐Qt,因为它不仅仅是GUI,它有很好的Python绑定(Gtk也是如此),而GUI库本身(主观上说)比Gtk更令人愉快.
另一方面,Gtk在Linux世界中更常见,因此您可以在Web上获得更多帮助.Gtk普及的原因可能更多地与Gnome和Ubuntu有关,而不是技术优点,但如果你想让你的软件与这两者很好地融合,你就可以通过Gtk轻松实现.
Qt肯定有一个可靠的数据库,网络,线程支持等...它做了很多,然后只是跨平台的GUI(它做了大部分相当好).
我推荐它超过GTK +.