模糊的Qt快速文本

时间:2015-04-19 18:02:35

标签: windows qt opengl qml qtquick2

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

Qt版本:5.4.1

平台:Windows 7

enter image description here

3 个答案:

答案 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的优秀视频卡驱动程序是一个问题。

可能的解决方案:

  • 使用ANGLE Qt build
  • 可以使用默认呈现类型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.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中添加。

答案 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
    }
}