qt - 我可以在 Qt Quick Controls 2 中全局切换到 native 文本渲染吗?

标签 qt qml qtquick2 text-rendering qtquickcontrols2

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

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/

相关文章:

c++ - QT C++ 中的 UCHAR 到 Qstring

c++ - 如何获得光标形状?

c++ - 使用 QtCreator 构建纯 C++

c++ - 如何平滑自定义 QML 元素的绘制?

qt - 将按钮与其上方的文本框对齐并调整其大小

c++ - Qt - 创建主窗口之前的非模态对话框

android - Android 上的 Qt/QML - onReadingChanged

qt - 自定义或定义新的 Qml ChartView 主题

qt - QML/QtQuick : make Image occupy only available height in ColumnLayout

qt - 如何让不倒翁到 'base style'