如何使用 Windows 风格在 Linux 中编译 Qt 应用程序?
Posted
技术标签:
【中文标题】如何使用 Windows 风格在 Linux 中编译 Qt 应用程序?【英文标题】:How can I compile Qt app in Linux using Windows style? 【发布时间】:2015-05-01 14:47:26 【问题描述】:我正在开发一个 Qt Widgets 应用程序,由于编译性能问题,我开始在 Linux Ubuntu 而不是 Windows 中开发它。问题是,在编译和运行时,应用程序以传统的 Ubuntu 样式显示,而不是 Windows (7) 样式。由于该应用程序仅适用于 Windows,我想知道如何在 Linux Ubuntu 中编译它,但使其以 Windows 样式显示。
我尝试在 main.cpp 中使用QApplication::setStyle(QStyleFactory::create("QWindowsStyle"));
,但没有成功。我猜 QtAssistant 文档对如何进行此更改还不够清楚。任何帮助将不胜感激。
【问题讨论】:
【参考方案1】:您是否有机会使用没有该样式编译的 Qt 包?您可以尝试运行QStyleFactory::keys() 来验证样式是否存在?
【讨论】:
感谢您的回复。运行上述功能,我得到了 3 个选项,其中之一是“Windows”。不幸的是,在使用了那个之后,我得到了一个奇怪的、类似于 Windows 98 的外观,这绝对不是我想要的:) 所以 Qt for Linux(我使用的是最后一个版本)可能没有 Windows 7 风格。你知道我该如何解决这种情况吗? @Momergil 我不是 Linux 包配置方面的专家,但一种选择肯定是从源代码重新编译 Qt。 样式通常依赖于其相关平台上的本机代码,因此您可能无法拥有 Windows 样式,除非在 Windows 上。例如,除了 OS X,你绝对不能在任何东西上使用 Mac OS X 风格。【参考方案2】:不能这样做,因为样式的元素是由 Windows(或 OS X)而不是 Qt 呈现的。 Qt 的风格实现要求操作系统库提供这些元素的位图。如果您愿意,您可以修改样式以将磁盘缓存用于静态项目。然后,您可以在所有平台上使用该样式。问题是这些操作系统提供的位图是操作系统的一部分,因此不可再分发。
在 Qt 3 时代,至少曾经无处不在的唯一特定于 plastform 的样式是旧的 Windows 95 样式。我不确定它的当前状态是什么。
【讨论】:
【参考方案3】:QStyleFactory::keys()
的第一次签出
然后通过调用设置外观
qApp->setStyle("Windows");
这个命令会给你 Windows 98 的外观。如果您想要 windows vista 外观,您应该使用 -style-windowsvista
配置 qt 源并重建所有源。
更新
根据http://doc.qt.io/qt-5/qstylefactory.html#details qt 风格不是独立于平台的。因此,在非 Windows 平台上拥有原生外观是不可能的。值得一提的是,在 Windows 中还需要 Windows SDK
本身才能构建 Qt 的源代码,否则您的应用程序将看起来像 Windows 7 中的 Windows 98。
【讨论】:
感谢您的回复。当我在 Windows 和 Linux 中安装 Qt 时,我从来不需要“配置”任何东西。我只是下载安装程序,选择所需的包并安装它。似乎“配置 qt 源”不适用于这种情况,对吗?那么,如果我想通过建议的修改“重建所有源”,您能否提供一个链接或解释,说明我该怎么做? @Momergil 安装 Qt 时,有一个选项可以安装所有源代码。您可以在目录中找到它们: QTDIR/QT_VERSION/Src/ 。在此目录中,您将找到配置文件和 qt.pro。然后使用 doc.qt.io/qt-4.8/configure-options.html 配置源。只需在该页面内搜索-qt-style-<style>
。用于构建使用此链接doc.qt.io/qt-5/build-sources.html以上是关于如何使用 Windows 风格在 Linux 中编译 Qt 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章