模糊的 Qt 快速文本
Posted
技术标签:
【中文标题】模糊的 Qt 快速文本【英文标题】:Blurred Qt Quick Text 【发布时间】:2015-04-19 18:02:34 【问题描述】:这是来自 Qt Creator 中的 Qt Quick 示例的示例,当我运行该项目时,所有文本都失去了质量并变得模糊,附图清楚地描述了问题。
Qt 版本:5.4.1
平台:Windows 7
【问题讨论】:
我该如何解决? 尝试将文本renderType设置为Text.NativeRendering doc.qt.io/qt-5/qml-qtquick-text.html#renderType-prop 对我来说看起来像一个图形驱动程序错误。按钮自动在本机呈现这不是问题。 找到任何解决方案了吗?同样的问题 控件没有模糊,只有文字。 【参考方案1】:这是一个老bug,当Qt使用系统OpenGL能力"[QTBUG-31983] Font rendering on Windows XP shows artifacts with QML Text element"987654321@
在 Qt 5.5 版之前,有两种用于 Windows 的 Qt 版本:ANGLE 和 OpenGL。它们可以通过安装程序文件名中的后缀“opengl”来区分,例如:
qt-opensource-windows-x86-msvc2013_opengl-5.4.1.exe
qt-opensource-windows-x86-msvc2013-5.4.1.exe
请参阅"Qt 5 on Windows ANGLE and OpenGL" 了解说明。
ANGLE 版本没有这样的缺陷。只有 OpenGL 构建受到影响。默认情况下,许多 Windows 安装对 OpenGL 的支持很差。在某些情况下,它可能会在 QML 窗口初始化期间崩溃。需要手动安装视频驱动程序。但是,对于一些老硬件来说,要找到这么好的显卡驱动来支持OpenGL是一个问题。
可能的解决方案:
使用 ANGLE Qt 构建 可以使用默认渲染类型Text.NativeRendering
子类化标准 QML Text
控件:
Text renderType: Text.NativeRendering;
如果不支持 Windows XP,ANGLE Qt 构建可能是一个很好的解决方案。
如果不需要大量使用图形,更好的解决方案是使用软件 OpenGL 渲染。在 Qt 5.4 之前,可以使用 MSYS Mesa 库opengl32.dll
(只能使用某些特定版本)。如果将此类库放置在使用 OpenGL Qt 版本构建的 Qt 应用程序的可执行文件夹中,则该库将自动用于软件渲染,而不是默认的硬件渲染。从 Qt 5.4 开始,此类库由 Qt 提供:opengl32sw.dll
(http://doc.qt.io/qt-5/windows-requirements.html)。
软件 OpenGL 模拟在所有类型的硬件上都能完美运行,并且不需要任何特殊的显卡驱动程序。
从 Qt 5.4 开始有应用程序属性Qt::AA_UseSoftwareOpenGL
:
强制使用基于软件的 OpenGL 实现 使用 OpenGL 实现的动态加载的平台。这 通常是Mesa llvmpipe 的修补版本,提供 OpenGL 2.1。如果没有这样的 OpenGL 实现可用,则该值可能无效。这个库的默认名称是
opengl32sw.dll
,可以 通过设置环境变量QT_OPENGL_DLL
来覆盖。看 特定于平台的页面,例如Qt for Windows,以获取更多信息 信息。此值已在 Qt 5.4 中添加。
【讨论】:
使用 QQuickWindow::setTextRenderType(QQuickWindow::NativeTextRendering)。【参考方案2】:这也发生在我的 QT 5.4.2 MinGW 项目中。在我的案例中,使用 Text.NativeRendering 解决了模糊文本。
【讨论】:
【参考方案3】:这会使用本机渲染来渲染字体。但不能解决Qt默认渲染的问题。
import QtQuick 2.4
import QtQuick.Window 2.0
Window
visible: true
width: 512
height: 300
Text
anchors.centerIn: parent
text: "Hello World!"
renderType: Text.NativeRendering
【讨论】:
以上是关于模糊的 Qt 快速文本的主要内容,如果未能解决你的问题,请参考以下文章