什么跨平台GUI库对每个平台都有最本土的感觉?

时间:2010-02-21 10:20:58

标签: c++ c user-interface cross-platform

我注意到GTK在所有平台上都有统一的感觉,这对于Linux爱好者来说非常棒,但对于喜欢原生GUI感觉的人来说并不是那么好。

我还没有正确使用Qt,这就是为什么我不能说这是为每个平台提供最原生的感觉的最佳选择 - 所以有人可以确认Qt是否是我追求的?

7 个答案:

答案 0 :(得分:7)

我认为Qt是一个很好的选择,具有原生外观。

在Windows XP上,窗口小部件将以Luna样式呈现(Windows XP默认样式)。 在Vista / 7上,它们将使用Aero主题进行渲染。 在MacOS上,它们将以Aqua主题呈现。

在Linux上,它有所不同。 Qt将使用他自己的主题(Plastique风格)或使用您的KDE主题(例如Oxygen主题)。 如果您更喜欢GNOME或XFCE(GTK),Qt也可以使用您的GTK主题。

alt text

Qt应用程序可以完美地集成到Windows XP / Vista / 7,MacOS,KDE,GNOME和XFCE桌面中。

答案 1 :(得分:6)

Wxwidgets使用底层平台绘制小部件(Linux下的GTK,Windows下的MFC ......),所以它不仅看起来是原生的,而且它是!

编辑 - 对于Mac,wxWidgets使用Carbon,目前正在过渡到Cocoa 3.0版。

Edit2 - 我自己并没有使用QT,但我周围使用它的人很喜欢它。在我在Windows下使用的QT应用程序中,我感觉不那么原生,与桌面的集成度稍差,但它可能只是对这些特定开发人员技能的反思。

虽然wxWidgets有它的怪癖(在STL上有点差的集成,类似MFC的事件,有时很难掌握盒子选项,有限的wxGrid ......),但它们正在被开发,系统越来越好(新的wxAUI对接小部件很棒)。

最后,wxWidgets在我不需要的时候已经非常好地避开了我的方式,允许我精确地使用它来满足我想要的东西,仅此而已。例如,我能够非常轻松地将自己的套接字代码插入到事件系统中。

我的感觉是,wxWidgets和QT几乎相当,而且去一个或另一个主要是关于个人适合。

答案 2 :(得分:2)

Qt和WxWindows来自一个干净的平板我会选择WxWindows - 只是因为它使用了本机控件,可以在未来的平台上提供更好的支持。

我通过以下不科学的过程得出了这个决定:

  • 查看已发布应用程序的列表,并选择那些看起来像本地应用程序的应用程序
  • VLC媒体播放器与FileZilla - 有时对我来说VLC感觉很古怪,而我甚至没有意识到FileZilla是用WxWindows编写的。
  • alleged top 32个应用程序中有5个使用WxWindows。

对我来说,上面的内容很容易与WxWindows一起作为首选,看看我在一段时间后会在哪里结束。

值得一提的是,我一直在做很多XAML,所以我肯定会考虑使用XUL;因为从代码中获取布局要好得多。

作为一个脚注多年前,我开发了一个应用程序使用谢天谢地的长期和可怕的ZincApplicationFramework - 它将自己的控件分层,就像Qt一样。这是可怕的,我花了很多时间搞乱内部,让它在Windows下工作。这使得我对采用相同方法的任何事情产生偏见或者至少持怀疑态度,因为在这个项目完成后不久我使用Allegris C ++ / Views来创建另一个应用程序,这更好,因为它是一个非常薄的层,高于本机控件 - 这意味着它很容易做事而且效率更高。

  

所以我可能偏爱薄层和原生控件......

答案 3 :(得分:1)

是的,我相信是的。 Qt尝试必须遵循原生的外观和感觉。不仅是小部件的外观,还有按钮顺序等等。当然,构建一个真正遵循所有原生UI惯例的应用程序将很难(例如,Mac UI设计与Windows非常不同),但是Qt会帮助你很多。

答案 4 :(得分:1)

我对Qt没有任何经验,但SWT凭借其本地图书馆完成工作的事实,对主要平台具有原生外观。我们已经用它来为我们的各种项目制作Eclipse插件。

答案 5 :(得分:1)

WxWidgets和Qt在OS X上看起来都是正确的,但除非你做了一些额外的工作,否则不能正常工作,因为在OS X上正确的OS集成还要求你正确地获得基本的AppleScript挂钩; OS X将这些用于许多常见的系统GUI操作,因此您需要它们(例如)拖放到您的Dock图标上。

答案 6 :(得分:1)

我个人更喜欢Qt而不是faaarrrr的WxWidgets。 wxWidgets的API感觉就像另一个MFC ......对我来说太笨拙了。另一方面,Qt更接近于现代C ++中应用程序的编写应该是什么样的,更不用说它优秀的QtDesigner(好吧,wxWidgets有wxFormBuilder,但上次我检查它并不像QtDesigner那么好)。