当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《我应该选择什么:GTK+或Qt?》经验,为你挑选了5个好方法。

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

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

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



1> Gregory Pako..:

由于您似乎主要针对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内容嵌入到他们的应用程序中.


`gtkmm`很棒,GTK +的所有功能,但是现代定义使用_actual_ C++,产生了我见过的最干净,最易读的GUI代码......实际上,只有最__bearable_,因为当我第一次开始尝试学习时GUI编程,它是`gtkmm`的整洁,恢复了我的生活意志.值得庆幸的是,坚持得到了回报,我发现它非常强大,它鼓励我比C++ 03更多地融入C++ 14.此外,它由同一主要维护人员维护了十多年的AFAICT.我只是一个粉丝,没有联盟,等等.
哦...... Symbian时代......

2> rui..:

我之前使用过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 +应用程序在不同平台上的外观相同是正面的,因为这意味着我不必花费额外的时间来确定如何使用每个本机工具包使我的UI完全正确地排列.另外 - 当你启动一个GTK +应用程序时,它总是调试输出CRITICAL警告的负载,似乎可以忽略.:S`-不,它没有,除非你做错了什么,这不是很好.我从来没有见过一个严重的警告,这个警告不是来自我自己的oops,并且使用正确的代码并不是很容易修复.我得到_no_调试消息,甚至没有警告

3> ngm..:

我从未使用过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.



4> Slartibartfa..:

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

另一方面,Gtk在Linux世界中更常见,因此您可以在Web上获得更多帮助.Gtk普及的原因可能更多地与Gnome和Ubuntu有关,而不是技术优点,但如果你想让你的软件与这两者很好地融合,你就可以通过Gtk轻松实现.



5> ChristopheD..:

Qt肯定有一个可靠的数据库,网络,线程支持等...它做了很多,然后只是跨平台的GUI(它做了大部分相当好).

我推荐它超过GTK +.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有