模糊的Qt快速文本

Rez*_*imi 6 windows opengl qt qml qtquick2

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

Qt版本:5.4.1

平台:Windows 7

在此输入图像描述

Ore*_*era 5

当Qt使用系统OpenGL功能时,这是一个古老的错误,可能会在某些硬件上重现“ [QTBUG-31983] Windows XP上的字体渲染显示带有QML Text元素的工件”

在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
Run Code Online (Sandbox Code Playgroud)

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

ANGLE构建没有这种缺陷。仅OpenGL构建会受到影响。在许多Windows安装上,默认情况下都很少支持OpenGL。在某些情况下,它可能会在QML窗口初始化期间崩溃。需要手动安装视频驱动程序。但是,对于某些旧硬件,要找到具有足够支持OpenGL的良好视频卡驱动程序是一个问题。

可能的解决方案:

  • 使用ANGLE Qt构建
  • 可以Text使用默认渲染类型将标准QML 控件子类化Text.NativeRendering
Text { renderType: Text.NativeRendering; }
Run Code Online (Sandbox Code Playgroud)

如果不支持Windows XP,则ANGLE 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开始,有application属性Qt::AA_UseSoftwareOpenGL

在使用动态加载OpenGL实现的平台上强制使用基于软件的OpenGL实现。这通常是Mesa llvmpipe的修补版本,提供OpenGL 2.1。如果没有可用的OpenGL实现,则该值可能无效。此库的默认名称是opengl32sw.dll并且可以通过设置环境变量来覆盖QT_OPENGL_DLL。有关更多信息,请参见特定于平台的页面,例如Windows的Qt。此值已在Qt 5.4中添加。