Mat*_*hew 18 gtk user-interface qt
很多人似乎对哪个更好有意见.我并不是真的要求这些意见,我想知道的是细节:使一个图形工具包与另一个图形工具包不同的是什么,以及Qt和Gtk +有哪些差异?
Cal*_*itt 22
我不能直接与Gtk +说话,但是在我之前的工作中我使用过Gtkmm,而在我目前的工作中,我使用的是Qt.两者都是C++,所以在这方面它们是一致的,但是Gtkmm只是Gtk +代码的包装器,它是直接的C.
在我切换作业时,我记得Ui代码中的一个主要区别是两个工具包如何处理布局.有些部分我认为Gtk做得更好,有些我认为Qt做得更好.两者都让你最终将你的小部件放在你想要的位置.
使用Gtkmm进行调试有点痛苦,因为除了保持指向结构的指针并调用Gtk +函数之外,类通常不会做任何事情.额外的间接水平可能很烦人.
Qt有更多的辅助代码,可以在各种设置中使用,至少与我使用的Gtkmm版本相比.当您需要为程序添加新维度时,可以了解线程,进程间通信和网络更容易的事情.他们也有他们的容器,如果你想使用它们,我认为它们比STL容器更具有更好的界面 - 但它们最终会做同样的事情,所以这是一个小优势.
Gtkmm和Qt之间的信号/槽机制是不同的.Qt依赖于编译过程中的额外步骤来生成元信息,它用于信号/槽.使用信号或槽的对象必须从QObject继承,QObject继承必须是第一个,没有菱形结构.例如,这使得难以定义发出信号的抽象接口.从好的方面来说,它们本身就知道线程问题,并在必要时将信号/插槽连接转换为基于事件的连接.Gtkmm使用SigC信号,这是简单的C++类,对我来说似乎在更广泛的情况下是有用的.此外,正如我记得的那样,只有建立连接的对象才需要从魔术基类继承.另外,由于插槽是对象,因此您可以将它们用作非常好的自适应仿函数对象.
我确信还有其他差异,但这就是我现在所记得的.请记住,我与Gtkmm的最后一次经历大约是3年前,所以其中一些项目现在可能已经改变了.
Way*_*yne 15
要了解差异,最好了解历史.
QT是作为用户界面开发的,并且在KDE刚开始开发时就开始有一些许可问题.KDE之所以选择QT是因为当时没有多少选择(Motif,Tcl/Tk等等)
GIMP开始开发,当时Window Toolkits没有达到开发人员所需要的时间,所以他们开始编写Gimp工具包(GTK).经过一段时间后,决定重新编写GTK并使其成为面向对象(GTK +).
同样在这个时候,由于QT的潜在许可问题,Gnome已经开始并决定使用GTK +库.
现在,如果您查看维基百科上的QT设计和GTK设计条目,您可以开始看到系统之间的一些差异.
请注意,QT被称为:
跨平台应用程序开发框架
而GTK +被称为:
用于创建图形用户界面的跨平台小部件工具包.
如果要相信这些条目,那么我认为这就是我们能够解决两者之间的主要差异,但我想说它在今天的世界中是相当精细的.
首先,您可以从 C 中使用 Gtk+。Qt 仅是 C++。
此外,Gtk+ 应用程序往往具有持续变化的对话框,带有关闭按钮。Qt 趋向于确定/应用/取消。不过,我不知道在工具包级别强制执行了多少。
至于编程,我不知道 Gtk 使用什么回调机制,但 Qt 的信号槽机制绝对是摇滚。