有人能建议一下这些库今天最好的用途是什么吗?它们仅仅支持GUI,还是也支持数据库、XML、网络、线程等等?
我正在阅读相关资料,并考虑开始学习/使用其中一个。
哪个是最常见的呢?它们之间有什么区别?为什么会选择其中之一而不是其他的?
有人能建议一下这些库今天最好的用途是什么吗?它们仅仅支持GUI,还是也支持数据库、XML、网络、线程等等?
我正在阅读相关资料,并考虑开始学习/使用其中一个。
哪个是最常见的呢?它们之间有什么区别?为什么会选择其中之一而不是其他的?
由于您似乎主要针对Linux,因此选择大多取决于您想使用的编程语言。
如果您使用C进行编码,则显然选择GTK+。
如果您使用C ++ 进行编码,请选择Qt,否则您需要使用 Gtkmm(一个基于GTK +的C ++封装)
如果您使用Python编写代码,则GTK +和Qt都具有该语言的绑定:请参见PyGtk,PyQt和 PySide(Nokia自己推出的那个)。
如果您使用Java编写代码,则Qt不再是可行的选择,因为Nokia停止了Qt Jambi(Qt的Java绑定)。
此外,Qt在其场景图API QGraphicsScene,构建在JavaScript Core之上的脚本引擎,其状态机和动画框架以及声明式UI方面更加精湛。
GTK +并没有提供那么多,尽管您可以在其旁边使用 Clutter。
如果您特别关注DB、XML(GTK+支持XML子集的解析器)和线程处理(GTK+有GLib),那么Qt将在QtSql、QtXml和QtConcurrent中提供所有这些功能。
总之,我会说Qt是一个可靠的选择。但GTK+也非常强大。
我不确定您是否能获取到您问题的明确答案,这就解释了为什么有些人继续喜欢Gnome而不是KDE,反之亦然。选择最适合您的工具。
附言:如果您计划同时面向Symbian,则选择Qt。
编辑:使用QtWebView
在Qt应用程序中引入Chromium以显示网页内容也是很棒的一点。其他人则可能使用Awesomium或Berkelium等方式嵌入网页内容到他们的应用程序中。
gtkmm
非常棒,它拥有GTK+所有的功能,但使用的是符合现代定义的真正的C++语言,产生了最干净、最易读的GUI代码,实际上这是我见过最能让人忍受的代码,因为当我刚开始尝试学习GUI编程时,gtkmm
的整洁性恢复了我的生命意志。幸运的是,坚持不懈终于有了回报,我发现它非常强大,并鼓励我更深入地学习C++14而不是C++03。此外,它由同一位主要维护者维护了十多年(据我所知)。我只是一个粉丝,没有任何关联等。 - underscore_d我之前使用过GTK+、QT和wxWidgets。以下是简要总结:
对于我的第一个跨平台UI项目,我决定选择wxWidgets,主要是因为当时它的许可证不像QT那样限制性(QT是GPL并且只适用于Linux),而且它有特定于平台的UI(不像GTK)。项目进展得很顺利,但在其他平台上编译和正常运行时出现了一些小问题,有时候某些事件的触发方式会有所不同等等。此外,wxWidgets中的GDI速度相当慢。
接下来,我在另一个Python项目中使用了GTK。为此,我使用了Python绑定,并且一切基本上都很顺利。我并不太喜欢UI在Windows和Mac上看起来不原生的事实,以及每次启动GTK+应用程序时都会输出大量CRITICAL警告,这些警告似乎可以忽略。:S
最后,我做了一个非常简单的QT项目,现在Nokia已经收购了它,结果非常出色。这三个库中最好的是QT。首先,如果你不是喜欢VI或Emacs的老派人士,QtCreator是非常棒的。我真的很喜欢VI,用了很多年,但是我更喜欢用QtCreator进行C++ QT项目。关于这个库,我也非常喜欢它的文档和提供的API。QT有一个概念叫做slots和signals,引入了新的C++关键字和预处理器。基本上,在阅读教程后你会很容易地理解并且开始喜欢它。我现在正在做iPhone开发,感觉有点像Cocoa/Interface Builder的UI范例。
总结:毫不犹豫地选择QT。许可证相当不错,并且SDK和文档非常好。
我从未使用过GTK,但是从个人使用Qt的经验来看:
Qt不仅是一个简单的GUI,而是一个完整的应用程序框架。我认为它就像C++的Java库。Qt提供了您所提到的所有功能--数据库、XML、网络和线程等等。它还提供了容器、迭代器以及一些boost库的对应项。
当我开始使用Qt时,最让我印象深刻的是极其广泛的文档。您可以获得一个名为Qt Assistant的程序,它在您的桌面上提供了完全索引和可搜索的API文档,以及众多的代码示例和教程。我发现这在每次搜索API信息时都能起到巨大的作用。需要记住方法签名时,访问非常快速。
我不确定哪个更常见;这可能很难准确衡量。它们两者肯定都很受欢迎。由于Gnome是Ubuntu的默认桌面环境,而Gnome建立在GTK之上,因此显然已经广泛使用。当然,KDE也非常受欢迎。Nokia在移动领域大力推广Qt--他们的Maemo操作系统(例如新的N900)很快将切换到Qt作为默认工具包(目前使用的是GTK)。我相信Qt也很快将成为Symbian操作系统的默认工具包。
我没有使用过Qt Creator,但我听说它非常好。它是一个带有与Qt明显整合的C++ IDE。它还具有假vim仿真,如果您喜欢这种东西,那肯定更好!
Qt使用qmake进行构建配置。我发现这比编写自己的makefiles要好得多。我不知道GTK用于构建的工具是什么。
一开始我发现Qt有一些让人畏缩的事情,例如它大量使用预处理器宏。信号/插槽系统为应用程序中的事件/消息传递提供了一个不错的机制,但如果您想要将其轻松移植到另一个工具包,则可能感觉有点像不可移植的魔法。此外,元对象编译器(moc),虽然我不完全确定它的作用,但似乎在幕后执行了太多的魔法。
总之,我推荐Qt,特别是如果你正在学习。它有非常棒的文档和漂亮的IDE,以及繁忙的论坛。你将能够非常快速地使用它构建C++应用程序,尤其是随着QML在4.7中的推出。
可能要根据你想做什么来进行选择。我建议使用Qt,因为它不仅有GUI,还有很好的Python绑定(Gtk也有),而且GUI库本身更加愉悦,主观地讲,比Gtk更好。
另一方面,Gtk在Linux世界中更为常见,因此你可以在网络上获得更多帮助。Gtk的广泛应用可能更多地与Gnome和Ubuntu有关,而不是技术优点,但如果你希望软件能够与这两个平台良好地融合,那么使用Gtk会更加容易实现。
Qt拥有稳定的数据库、网络、线程支持等功能...它不仅仅是跨平台GUI(而且大多数情况下都做得很好)。
我建议使用Qt而不是GTK+。
除了其他答案提到的QT优点,还有以下内容。QT有非常好的文档,自己的IDE和GUI创建器,并通过一些新概念(如槽/信号,基本上是事件)增强了C++。
我不是GTK开发人员,因此无法将它们与GTK世界进行比较 :(
看起来诺基亚将会在所有地方使用Qt,比如Maemo系统。