这是Qt Creator中Qt Quick示例的一个示例,当我运行项目时,所有文本都失去了质量并且模糊不清,附图清楚地描述了问题。
Qt版本:5.4.1
平台:Windows 7
答案 0 :(得分:4)
当Qt使用系统OpenGL功能时,这是一个可以在某些硬件上重现的旧bug "[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
有关说明,请参阅"Qt 5 on Windows ANGLE and OpenGL"。
ANGLE构建没有这样的缺陷。只有OpenGL构建受到影响。许多Windows安装默认情况下都不支持OpenGL。在某些情况下,它可能会在QML窗口初始化期间崩溃。需要手动视频驱动程序安装。但是,对于某些旧硬件来说,找到足够支持OpenGL的优秀视频卡驱动程序是一个问题。
可能的解决方案:
Text
对标准QML Text.NativeRendering
控件进行子类化: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中添加。
答案 1 :(得分:1)
这也发生在我的QT 5.4.2 MinGW项目中。使用Text.NativeRendering解决了我的情况下的模糊文本。
答案 2 :(得分:0)
这将使用本机渲染呈现字体。但是没有解决默认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
}
}