一个新接触窗口应用程序的人应该学习X,GTK+还是其他什么?

4
假设评估选择的因素包括可用的小部件库、学习曲线的坡度和可移植性程度(适用的平台)。至于语言绑定,我正在使用C++。谢谢!

X和GTK不是同一种东西。 - anon
当你谈论可移植性时,你是指需要在Windows和Linux之间移植的代码(例如)吗? - apaderno
基本上是的。我有一台带有XP系统的台式机和一台旧笔记本电脑,装有Xubuntu系统。 - mring
11个回答

11

Qt非常优秀。它拥有相当庞大的库(不仅限于UI)。支持许多平台。


11

纯X现在已经很难以移植了。基本上有三种主要的工具包:

  • GTK+(和C++封装器GTKmm)
  • Qt
  • wxWidgets

它们都相当可比,所以选择哪一个是个人口味的问题。这三个工具包都可以运行在主流的三个操作系统上,尽管在Mac和Windows上,GTK+有点棘手。


3
根据我的经验,以下是从容易且舒适到不太舒适的工作方式排名:1. Qt,2. GTK+,3. wxWidgets。 - Andrejs Cainikovs
3
我也会选择Qt——它稳定、功能丰富、易于使用、可移植,并且在工业界被广泛采用,因此对潜在雇主来说可能比其他框架更有价值。 - mrkj

8

我个人最喜欢的是Qt。它是跨平台的,非常直观易懂,有广泛的文档支持,还有许多语言的绑定(原始语言是C++),使用它开发实际上很有趣。


3
除非您计划编写自己的UI工具包,否则使用X直接没有任何意义了。太难,需要太多工作。
在Linux上,您有两个主要选择-GTK和Qt。两者都可以正常使用。与GTK本身相比,Qt作为本机C ++工具包的表现更好,尽管GTKmm是一个不错的C ++包装器。GTK倾向于可从更多语言中使用,但如果您无论如何都使用C ++,那么这并不重要。
两者均可跨平台,但在其他操作系统上,特别是在Mac OS X上,GTK感觉有点陌生。Qt在Windows上完全本地化,在Mac OS X上也非常接近。它还提供了许多其他跨平台功能,例如线程,文件系统访问,网络等。至少在可移植性方面,Qt似乎胜出。
通常,选择流行的东西-有更多找到好例子,解剖预制应用程序,使用库甚至只是寻找帮助的机会。

3

根据你的要求,如果你需要一个C++的窗口小部件库,我建议使用QT;GTK也不错,但它是为C语言创建的(就像GNU项目中许多为C编写的库一样,C优于C++)。


在创建应用程序时,没有人直接使用X;唯一与X直接交互的人是创建新的窗口小部件库的人,正如其他人在此已经提到的那样。


1

GTK+是一个跨平台的程序,可以在大多数Linux发行版和Windows上运行。

当然,还有Qt和WxWidgets这些跨平台的工具。


1

在我看来,最好的C++ GUI工具包是Qt http://qt.nokia.com

它是跨平台的(Windows,Mac OS X,Linux),高效并且有很多不错的扩展(Qwt,Qwt3d,QGLViewer等)

另一方面,如果你想要学习GUI编程,我建议学习一些系统,包括GTK,Tk,Motif。


1

我建议你去找一本关于GUI的通用书籍。我曾经使用过Borland、Windows、wxWidgets、QT和PEG窗口框架。总之,没有标准,但GUI系统是“事件驱动”的。学习“事件驱动”编程应该会给你一个很好的基础。


0

我认为你可以从wxWidgets开始。


1
......好吧,只有在你想使用受MFC启发的q工具包时才这样做。我几年前尝试过它,除非它完全改变了,否则我永远不会建议使用它。 - PierreBdR
wxWidgets是用于构建跨平台GUI的工具。Pete要求提供一种便携式解决方案,但我不确定他所说的平台是指不同的Linux平台,还是想要支持Windows和Linux两个平台。 - apaderno

0

如果您最熟悉和感兴趣的是C语言,GTK+是一个不错的起点。如果是C++,QT可能更适合您。您选择的桌面环境也是一个因素。Gnome使用GTK+,KDE使用QT。

原始的X编程过于低级,不适合初学者。很少有程序直接针对X API进行编写。一直以来都有在其上层的工具包。一些较旧的工具包是Motif(Lesstif)和Athena。不过不要尝试从这些开始,它们现在已经非常老了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接