我可以在 Qt Quick Controls 2 中全局切换到本机文本呈现吗?
Can I globally switch to native text rendering in Qt Quick Controls 2?
我想对应用程序中的所有文本使用本机呈现。对于每个 Text
、Label
等元素,我都可以这样做
Text {
renderType: Text.NativeRendering
}
触发原生渲染。我还可以为整个应用程序使用软件渲染器:
QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software);
但是由于软件渲染器的一些错误和一些性能问题,我想避免这种情况。
是否有全局开关来更改渲染类型?
从 Qt 5.7 开始,您可以更改默认的 Qt Quick 文本呈现类型,但不幸的是只能在构建时更改。要更改默认值,您必须重建 libQt5Quick.so
并将 QT_QUICK_DEFAULT_TEXT_RENDER_TYPE
设置为 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
重建库之前调用make clean
(或者如果你想节省时间,只需删除qquicktext*.o
)。
编辑:从 Qt 5.10 开始,也可以通过 QQuickWindow::setTextRenderType()
在 C++ 中指定默认文本渲染类型。只是注意在加载QML内容之前设置它。
环境变量QML_DISABLE_DISTANCEFIELD
控制这个。
如果你把
qputenv("QML_DISABLE_DISTANCEFIELD", "1");
在您的主要部分的开头,您将在各处获得漂亮而清晰的文本渲染。
首先在c++ main函数中添加这一行:QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);
我想对应用程序中的所有文本使用本机呈现。对于每个 Text
、Label
等元素,我都可以这样做
Text {
renderType: Text.NativeRendering
}
触发原生渲染。我还可以为整个应用程序使用软件渲染器:
QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software);
但是由于软件渲染器的一些错误和一些性能问题,我想避免这种情况。
是否有全局开关来更改渲染类型?
从 Qt 5.7 开始,您可以更改默认的 Qt Quick 文本呈现类型,但不幸的是只能在构建时更改。要更改默认值,您必须重建 libQt5Quick.so
并将 QT_QUICK_DEFAULT_TEXT_RENDER_TYPE
设置为 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
重建库之前调用make clean
(或者如果你想节省时间,只需删除qquicktext*.o
)。
编辑:从 Qt 5.10 开始,也可以通过 QQuickWindow::setTextRenderType()
在 C++ 中指定默认文本渲染类型。只是注意在加载QML内容之前设置它。
环境变量QML_DISABLE_DISTANCEFIELD
控制这个。
如果你把
qputenv("QML_DISABLE_DISTANCEFIELD", "1");
在您的主要部分的开头,您将在各处获得漂亮而清晰的文本渲染。
首先在c++ main函数中添加这一行:QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL);