模糊的Qt Quick文本

8
这是来自Qt Creator中的Qt Quick示例之一。当我运行该项目时,所有文本都失去了质量并变得模糊。附图清晰地描述了这个问题。
Qt版本:5.4.1
平台:Windows 7 enter image description here

我该如何解决这个问题? - Reza Ebrahimi
5
尝试将文本的渲染类型设置为Text.NativeRendering。http://doc.qt.io/qt-5/qml-qtquick-text.html#renderType-prop - dfranca
1
在我看来,这似乎是一个图形驱动程序的错误。按钮自动呈现为本地控件,不可能是问题的原因。 - Simon Warta
有找到任何解决方案吗?我也遇到了同样的问题。 - vrcmr
控件并未模糊,只有文本模糊了。 - dtech
我在Ubuntu 21.04中运行QCAD 3.27也遇到了这个问题。 - Yorga Babuscan
3个回答

7

这是一个旧的bug,当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

请参阅"在Windows上使用Qt 5 ANGLE和OpenGL"的说明。
ANGLE版本没有这样的缺陷。只有OpenGL版本受到影响。在许多Windows安装中,默认情况下对OpenGL的支持很差。在某些情况下,它可能会在QML窗口初始化期间崩溃。需要手动安装视频驱动程序。但是,对于一些旧硬件来说,找到具有足够OpenGL支持的良好视频卡驱动程序是一个问题。
可能的解决方案:
  • 使用ANGLE Qt版本
  • 可以使用默认渲染类型子类化标准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.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开始添加。

使用 QQuickWindow::setTextRenderType(QQuickWindow::NativeTextRendering)。 - Alexander Dyagilev

1
这也发生在我的QT 5.4.2 MinGW项目中。使用Text.NativeRendering解决了模糊文本问题。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接