【发布时间】:2011-01-19 07:39:39
【问题描述】:
我注意到 GTK 在所有平台上都有统一的感觉,这对 Linux 爱好者来说非常棒,但对于喜欢原生 GUI 感觉的人来说就不是那么好了。
我还没有正确使用 Qt,这就是为什么我不能说这是为每个平台提供最原生感觉的最佳选择 - 所以有人可以确认 Qt 是否是我所追求的?
【问题讨论】:
标签: c++ c user-interface cross-platform
我注意到 GTK 在所有平台上都有统一的感觉,这对 Linux 爱好者来说非常棒,但对于喜欢原生 GUI 感觉的人来说就不是那么好了。
我还没有正确使用 Qt,这就是为什么我不能说这是为每个平台提供最原生感觉的最佳选择 - 所以有人可以确认 Qt 是否是我所追求的?
【问题讨论】:
标签: c++ c user-interface cross-platform
我认为 Qt 是具有原生外观的绝佳选择。
在 Windows XP 上,小部件将以 Luna 样式(Windows XP 默认样式)呈现。 在 Vista/7 上,它们将以 Aero 主题呈现。 在 MacOS 上,它们将使用 Aqua 主题呈现。
在 Linux 上,情况有所不同。 Qt 将使用他自己的主题(Plastique 风格)或使用您的 KDE 主题(例如 Oxygen 主题)。 如果您更喜欢 GNOME 或 XFCE (GTK),Qt 也可以使用您的 GTK 主题。
Qt 应用程序可以完美集成到 Windows XP/Vista/7、MacOS、KDE、GNOME 和 XFCE 桌面中。
【讨论】:
Wxwidgets使用底层平台来绘制widget(Linux下的GTK,Windows下的MFC……),所以不仅看起来很native,而且是!
编辑 - 对于 Mac,wxWidgets 使用 Carbon,目前正在过渡到 Cocoa 3.0。
Edit2 - 我自己没有使用 QT,但我周围使用它的人非常喜欢它。在我在 Windows 下使用过的 QT 应用程序中,我感觉不那么原生,与桌面的集成稍差一些,但这可能只是这些特殊开发人员技能的体现。
虽然 wxWidgets 有它的怪癖(在 STL 上的集成有点差,类似 MFC 的事件,有时难以掌握框选项,有限的 wxGrid...),但它们正在开发中,并且系统正在变得越来越好(新的 wxAUI 对接小部件很棒)。
最后,wxWidgets 非常擅长在我不需要它的时候避开它,让我可以将它精确地用于我想要的东西,仅此而已。例如,我能够非常轻松地将自己的套接字代码插入事件系统。
我的感觉是 wxWidgets 和 QT 几乎可以相提并论,选择其中一个主要是为了个人适合。
【讨论】:
从全新的 Qt 和 WxWindows 中脱颖而出,我会选择 WxWindows - 仅仅是因为它使用本机控件,可以为您在未来的平台上提供更好的支持。
我通过以下不科学的过程做出了这个决定:
对我来说,以上内容很容易将 WxWindows 作为首选,然后看看我会在哪里结束。
值得一提的是,我已经做了很多 XAML,所以我肯定会考虑改用 XUL;因为从代码中获取布局会更好。
作为一个脚注,几年前我开发了一个应用程序,使用了久违且可怕的 ZincApplicationFramework——它在上面分层了它自己的控件,就像 Qt 一样。这太可怕了,我花了很长时间弄乱内部结构,让它在 Windows 下正常工作。这让我对采用相同方法的任何事情产生偏见,或者至少持怀疑态度,因为在这个项目完成后不久,我使用 Allegris C++/Views 创建了另一个应用程序,这要好得多,因为它是原生控件之上的一个非常薄的层- 这意味着做事很容易而且效率更高。
所以我可能更喜欢薄层和原生控件......
【讨论】:
是的,我相信是的。 Qt 尝试必须遵循原生的外观和感觉。不仅是小部件的外观,还有按钮顺序等。当然,构建一个真正遵循所有原生 UI 约定的应用程序会很困难(例如,Mac UI 设计与 Windows 非常不同),但是 Qt对你有很大帮助。
【讨论】:
我对 Qt 的使用经验为零,但 SWT 拥有主要平台的原生外观,因为它提供原生库来完成这项工作。我们已经使用它为我们的各种项目制作 Eclipse 插件。
【讨论】:
WxWidgets 和 Qt 在 OS X 上看起来都不错,但除非你做一些额外的工作,否则它们不能正常工作,因为 OS X 上正确的 OS 集成还需要你正确获得基本的 AppleScript 钩子; OS X 将这些用于许多常见的系统 GUI 操作,因此您需要使用它们(例如)拖放到您的停靠图标上。
【讨论】:
我个人更喜欢 Qt 而不是 faaarrrr 的 WxWidgets。 wxWidgets 的 API 感觉就像另一个 MFC ...... 太笨拙了,我不喜欢。另一方面,Qt 更接近于用现代 C++ 编写应用程序应该是什么样子,更不用说它出色的 QtDesigner(好吧,wxWidgets 有 wxFormBuilder,但上次我检查它并没有 QtDesigner 好)。
【讨论】: