windows - 模糊的 Qt 快速文本

标签 windows qt opengl qml qtquick2

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

Qt 版本:5.4.1

平台:Windows 7

enter image description here

最佳答案

这是一个旧错误,当 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

参见 "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 :

Forces the usage of a software based OpenGL implementation on platforms that use dynamic loading of the OpenGL implementation. This will typically be a patched build of Mesa llvmpipe, providing OpenGL 2.1. The value may have no effect if no such OpenGL implementation is available. The default name of this library is opengl32sw.dll and can be overridden by setting the environment variable QT_OPENGL_DLL. See the platform-specific pages, for instance Qt for Windows, for more information. This value has been added in Qt 5.4.

关于windows - 模糊的 Qt 快速文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29733711/

相关文章:

C#循环填充多个DataGridView

python - QSystemTrayIcon 在 Ubuntu 12.04 中不显示

opengl - 如何通过质心计算的光实现平面着色?

windows - 管理员模式与非管理员模式 - 无法覆盖变量,因为变量已被优化

c - 在 Visual Studio 中构建大量小工具有什么好方法?

c++ - Qt/C++获取所有应用程序窗口的Xid

linux - 使用随机暂停方法播放时驱动程序调用、openGL 调用和损坏的堆栈(A.K.A. Poor man's profiler)

c++ - OpenGL 围绕相机移动场景

python - 没有名为 '_curses' 的模块

qt - 使用 Qt 保存和检索图像