模糊QT快速文本

这是Qt Creator中Qt Quick例子的一个例子,当我运行项目时,所有的文本都失去了质量和模糊,附图描述了这个问题。

Qt版本:5.4.1

平台:Windows 7

在这里输入图像说明

这是一个旧的bug,当Qt使用系统OpenGL功能时,可能会在某些硬件上复制“[QTBUG-31983] Windows XP上的字体渲染显示带有QML文本元素的工件”

在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 

有关说明,请参阅“Windows ANGLE和OpenGL上的Qt 5” 。

ANGLE版本没有这样的缺陷。 只有OpenGL版本受到影响。 许多Windows安装默认情况下OpenGL得到很好的支持。 在某些情况下,只能在QML窗口初始化期间崩溃。 手动视频驱动程序安装是必需的。 但是,对于一些旧的硬件来说,找到这样的好的显卡驱动程序对OpenGL有足够的支持是个问题。

可能的解决方案:

  • 使用ANGLE Qt构建
  • 可以使用默认的渲染类型Text.NativeRendering标准的QML Text控件:
 Text { renderType: Text.NativeRendering; } 

如果不支持Windows XP,则角色Qt构建可能是一个很好的解决方案。

如果不需要密集的图形使用,更好的解决方案是使用软件OpenGL渲染。 在Qt 5.4之前,可以使用MSYS Mesa库opengl32.dll (只使用一些特定的版本)。 如果将这样的库放置在使用OpenGL Qt版本构建的Qt应用程序的可执行文件夹中,则该库将自动用于软件渲染,而不是默认的硬件渲染。 从Qt 5.4开始,这样的库由Qt: opengl32sw.dllhttp://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中。

这使本机渲染字体。 但是不能解决默认的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 } }