【问题标题】:Do Qt apps look and feel native under Windows?Qt 应用程序在 Windows 下的外观和感觉是原生的吗?
【发布时间】:2011-11-10 00:54:17
【问题描述】:

我即将将我的一个 Mac 应用程序移植到 Windows。 Mac 应用程序使用 Apple 的原生 Cocoa/Appkit 框架作为 UI。 UI 是 Obj-C 代码,核心应用功能是可移植的 C++ 代码。

现在我正在寻找一种将应用程序移植到 Windows 并使其外观和感觉对 Windows 用户原生的方法。我的选择是微软的 MFC 和 Qt 框架。虽然我确信 MFC 应用程序具有原生的外观和感觉,但我记得 MFC 编码框架本身的内容是可怕的。我从开发人员的角度研究了 Qt,并喜欢它。

但由于我不是 Windows 用户,我不知道 Qt 应用程序是否具有原生 Windows 外观。

因此我的问题是:我能否让 Qt 应用(无需大量工作)表现得像使用原生 Windows 框架编写的一样?

【问题讨论】:

    标签: windows qt


    【解决方案1】:

    您可以轻松更改 Qt 应用程序的样式。在 Windows 和 Mac 上,默认样式实际上是使用原生函数来绘制窗口、控件等。

    此外,Qt 确实采取了许多措施,因此即使是应用程序的最小方面(您甚至不会想到的事情)也可以模拟特定平台的本机行为。因此,您的 Qt 应用程序在移植时也可以替换您当前的 Mac 应用程序。

    我强烈建议您不要使用 MFC,您会后悔的(尤其是如果您从未使用过本机 Win32 API)。在灵活性和易用性方面,它与 Qt 完全相反。

    【讨论】:

    • 如果您检查 Qt 的源代码,您会发现这些陈述具有误导性。 Qt 重新实现了 Windows 外观。例如,如果它调用本机 GUI 函数,这些样式将无法在 Linux 上运行。更准确地说,它使用原生光栅图形函数。
    • @user1095108 我认为您正在考虑 Qt 的“Windows 95”主题?那确实是一个模仿。但本机主题实际上在 Linux 或 Windows 以外的任何其他地方工作。
    • 我的意思是QWindowsStyle,它是QWindowsXPStyleQWindowsVistaStyle 的基础,不知道是95 年。怎么能说“主题”?这是一种风格。
    • 嗨,例如,在 Mac 中,在使用 Objective C+Cocoa/Swift 设计的应用程序中,滚动条会呈现弹跳效果,如果您用高“速度”,您会看到滚动条和该区域在恢复之前弹回一段距离。 Mac 上的 Qt 应用程序不会出现这种行为..
    • +1 建议远离 MFC。除非你真的必须这样做,因为你的程序已经用 MFC 编写了。
    【解决方案2】:

    您可以在doc.qt.io 上阅读:

    Qt 小部件是传统的用户界面元素,通常 在桌面环境中找到。小部件很好地集成到 在 Windows、Linux 和 Mac OSX。

    看看Qt Widget Gallery

    Qt 对小部件样式和主题的支持使您的应用程序能够 适合原生桌面环境。

    您可能对名为 How to Make Your Qt Application Look Native 的演示文稿感兴趣:

    Qt 在每个支持的平台上都使用原生风格的 API,但是 有一些额外的技巧可以用来确保你的 Qt-based 应用程序的外观、感觉和行为更好。本次演讲将 浏览示例、提示和记号,以帮助您完成您的 应用程序在所有平台上看起来都很棒。

    【讨论】:

      【解决方案3】:

      它们看起来有点,感觉不是很多。

      特别是如果您在设计应用时考虑到了窗口(就像您使用可可所做的那样)。我还没有看到功能区(有商业 3rd 方克隆)和 MFC 蓝/黑样式或分组图标视图中的列表视图。

      不幸的是,WxWidgets 也很难编程。肯定比 MFC 好。 如果您想要一个真正的原生应用程序,则只剩下两个选项,MFC(如果您需要快速和小型)或 .NET(如果您不关心速度)。

      以前的公司在 MFC 之上有一个 50000 LOC 层,这对于能够更舒适地对这个 1992 框架进行编程是必要的)。不幸的是,我不知道市场上有什么可以做同样的事情。

      问题是您的客户是否真的喜欢原生外观,它是否会成为销售因素。我现在正在使用 QT,因为它已经足够好了。

      【讨论】:

      • 另一点需要考虑,对于某些应用程序,同一用户会同时在不同的操作系统上使用它,并且可能会欣赏应用程序拥有跨平台的外观和感觉。跨度>
      • 这是 Qt,而不是 QT(快速时间)。
      • 什么时间快? :D
      • 还有第三种选择:WTL。它比 MFC 优雅得多。
      【解决方案4】:

      不,他们没有。它很接近,但控件看起来不是原生的。人们的意思是它使用 Win32 API 来呈现控件,类似于 Windows 呈现原生控件的方式,因此性能应该是可比的。

      只有 Windows 特定框架(如 .NET Windows Forms)才使用实际的本地 Win32 控件来处理常见的 UI 元素。

      【讨论】:

      • 不仅 Windows 特定的框架使用本机 API。还有像 wxWidgets 这样的跨平台框架。
      【解决方案5】:

      你应该看看Style reference。是的,这是可能的,不,它不需要很多工作(根本)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        相关资源
        最近更新 更多