我想对应用程序中的所有文本使用 native 渲染。对于每个 Text
、Label
等元素,我都可以这样做
Text {
renderType: Text.NativeRendering
}
触发 native 渲染。我还可以对整个应用程序使用软件渲染器:
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 clean
(或者如果您想节省时间,只需删除 qquicktext*.o
) make
编辑:从 Qt 5.10 开始,还可以通过 QQuickWindow::setTextRenderType()
在 C++ 中指定默认文本渲染类型。 。请注意在加载 QML 内容之前设置它。
关于qt - 我可以在 Qt Quick Controls 2 中全局切换到 native 文本渲染吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43369016/