这是来自Qt Creator中的Qt Quick示例之一。当我运行该项目时,所有文本都失去了质量并变得模糊。附图清晰地描述了这个问题。
Qt版本:5.4.1
平台:Windows 7
Qt版本:5.4.1
平台:Windows 7
![enter image description here](https://istack.dev59.com/g8Viq.webp)
这是一个旧的bug,当Qt使用系统OpenGL功能时,可能会在某些硬件上重现"[QTBUG-31983] Font rendering on Windows XP shows artifacts with QML Text element"。
在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
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
:
opengl32sw.dll
,可以通过设置环境变量QT_OPENGL_DLL
进行覆盖。有关更多信息,请参见特定于平台的页面,例如Qt for Windows。此选项从Qt 5.4开始添加。这将使用本地渲染来呈现字体。但无法解决默认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
}
}