2017-04-12 12 views
4

アプリケーションのすべてのテキストにネイティブレンダリングを使用したいと思います。各TextLabel、などの要素に関しては、私は、これはQtクイックコントロール2でネイティブテキストレンダリングにグローバルに切り替えることはできますか?

Text { 
    renderType: Text.NativeRendering 
} 

ネイティブレンダリングをトリガするために行うことができます。私はまた、全体のアプリケーションのためのソフトウェアレンダラを使用することができます。

QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software); 

ただしによるソフトウェアレンダラを持ついくつかのバグといくつかのパフォーマンスの問題のために、私はそれを避けるためにしたいと思います。

レンダリングタイプを変更するグローバルスイッチはありますか?

答えて

2

Qt 5.7以降では、デフォルトのQtクイックテキストレンダリングタイプを変更できますが、残念なことにビルド時のみです。デフォルトを変更するには、QT_QUICK_DEFAULT_TEXT_RENDER_TYPENativeRenderingに設定してlibQt5Quick.soを再構築する必要があります。詳細は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前に(ちょうどqquicktext*.oを削除するか、時間を節約したい場合)make cleanを呼び出します。

編集:Qt 5.10以降、C++で既定のテキストレンダリングタイプをQQuickWindow::setTextRenderType()で指定することもできます。 QMLコンテンツを読み込む前に設定することに気をつけてください。

+0

アム。 –

2

環境変数QML_DISABLE_DISTANCEFIELDがこれを制御します。あなたがメインの先頭に

qputenv("QML_DISABLE_DISTANCEFIELD", "1"); 

を置く場合 、あなたはどこでもいいとシャープなテキストレンダリングを取得します。

出典:私は右の私はまだ(各種-devパッケージをインストール)Qtが持っているさまざまな依存関係に持参する必要があることを前提とするhttp://www.kdab.com/~thomas/stuff/distancefield.html

関連する問題