【问题标题】:What cross platform GUI library has the most native feel for each platform?哪个跨平台 GUI 库对每个平台具有最原生的感觉?
【发布时间】:2011-01-19 07:39:39
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    我认为 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 桌面中。

    【讨论】:

    • 要使 OS X 与 Qt 兼容还需要一些工作。也就是说,可以做到。
    • 你觉得Qt比Wxwidgets好,还是两者各有优势?我觉得 Qt 可能“更容易”使用。
    • 对不起,我从未使用过 WxWidgets。你可以得到一些关于 Wx 和 Qt 的信息:wiki.wxwidgets.org/WxWidgets_Compared_To_Other_Toolkits#Qt
    • 请注意,Qt 仍然不是原生的......它可能是模仿原生感觉的最佳选择,但它仍然是自定义绘制的。
    【解决方案2】:

    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 几乎可以相提并论,选择其中一个主要是为了个人适合。

    【讨论】:

    • 我向 Desintegr 询问了 Qt 与 Wxwidgets 的关系;同样我也希望你帮我选择正确的答案。谢谢。
    【解决方案3】:

    从全新的 Qt 和 WxWindows 中脱颖而出,我会选择 WxWindows - 仅仅是因为它使用本机控件,可以为您在未来的平台上提供更好的支持。

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

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

    对我来说,以上内容很容易将 WxWindows 作为首选,然后看看我会在哪里结束。

    值得一提的是,我已经做了很多 XAML,所以我肯定会考虑改用 XUL;因为从代码中获取布局会更好。

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

    所以我可能更喜欢薄层和原生控件......

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        我对 Qt 的使用经验为零,但 SWT 拥有主要平台的原生外观,因为它提供原生库来完成这项工作。我们已经使用它为我们的各种项目制作 Eclipse 插件。

        【讨论】:

          【解决方案6】:

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

          【讨论】:

            【解决方案7】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-09-07
              • 2011-01-25
              • 1970-01-01
              • 2011-12-22
              • 1970-01-01
              • 2023-03-10
              相关资源
              最近更新 更多