我可以全局切换到Qt Quick Controls 2中的本地文本渲染吗?

7

我希望在我的应用程序中所有文本都使用本地渲染。对于每个TextLabel等元素,我都可以这样做。

Text {
    renderType: Text.NativeRendering
}

触发本地渲染。我还可以使用整个应用程序的软件渲染器:

QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software);

由于软件渲染器存在一些错误和性能问题,我希望避免使用它。

是否有全局开关可以更改渲染类型?

3个回答

6
环境变量QML_DISABLE_DISTANCEFIELD可控制此功能。如果您放置了


qputenv("QML_DISABLE_DISTANCEFIELD", "1");

在你的主函数开头,你将会得到一个优美而清晰的文本渲染。
来源:http://www.kdab.com/~thomas/stuff/distancefield.html

6
自从Qt5.7版本以后,你可以更改默认的Qt Quick文本渲染类型,但不幸的是只能在构建时更改。为了更改默认值,你需要使用QT_QUICK_DEFAULT_TEXT_RENDER_TYPElibQt5Quick.so重建并设置为NativeRendering。有关更多详细信息,请参见https://codereview.qt-project.org/#/c/121748/
如果您是使用qt.io安装程序安装的Qt,请使用维护工具安装源代码包,导航至qtdeclarative/src/quick,运行带有定义的qmake,并进行构建。大致如下:
cd path/to/Qt/Sources/5.8/qtdeclarative/src/quick
# NOTE: make sure to run qmake from the same/correct Qt installation
path/to/Qt/5.8/<spec>/qmake "DEFINES+=QT_QUICK_DEFAULT_TEXT_RENDER_TYPE=NativeRendering"
make -jN

如果您拥有自己搭建的Qt安装环境,在重新构建库之前,可以使用make clean(或者如果您想节省时间,只需删除qquicktext*.o)来清理环境。
编辑:从Qt 5.10开始,还可以通过C++指定默认文本呈现类型,方法是使用QQuickWindow::setTextRenderType()。请注意在加载QML内容之前设置它。

我是否正确地假设我仍然需要引入Qt所需的各种依赖项(安装各种-dev软件包)? - Frank Meerkötter

2

在 C++ 的主函数中先添加以下代码:QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);

该代码用于设置 Qt 应用程序使用软件 OpenGL。

感谢。请注意,这会强制使用软件渲染器。 - Georg Schölly
哦!我以为你有一个OpenGL驱动程序问题,如果你的文本和标签在当前配置下呈现良好,为什么要强制进行本地渲染!!! - Mamen abdou

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