2017-04-12 3 views
4

Je voudrais utiliser le rendu natif pour tout le texte de mon application. Pour chaque Text, Label, etc. élément que je peux le fairePuis-je passer globalement au rendu de texte natif dans Qt Quick Controls 2?

Text { 
    renderType: Text.NativeRendering 
} 

pour déclencher le rendu natif. Je peux aussi utiliser le moteur de rendu logiciel pour l'ensemble de l'application:

QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software); 

Cependant, en raison de quelques bugs avec le moteur de rendu logiciel et quelques problèmes de performance, je voudrais éviter cela.

Existe-t-il un commutateur global pour modifier le type de rendu?

Répondre

2

Depuis Qt 5.7, vous pouvez modifier le type de rendu Qt Quick text par défaut, mais malheureusement uniquement au moment de la construction. Pour modifier la valeur par défaut, vous devez reconstruire libQt5Quick.so avec QT_QUICK_DEFAULT_TEXT_RENDER_TYPE défini sur NativeRendering. Pour plus de détails, voir https://codereview.qt-project.org/#/c/121748/. Si vous avez installé Qt à l'aide d'un programme d'installation de qt.io, installez les paquetages sources en utilisant l'outil de maintenance si vous ne l'avez pas déjà fait, accédez à qtdeclarative/src/quick, exécutez qmake avec define et build. Quelque chose le long des lignes:

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 

Si vous avez une installation de Qt auto-construit, appelez make clean (ou si vous voulez gagner du temps, il suffit de supprimer qquicktext*.o) avant make pour reconstruire la bibliothèque.

EDIT: Depuis Qt 5.10, il est également possible de spécifier le type de rendu de texte par défaut en C++ via QQuickWindow::setTextRenderType(). Notez juste pour le régler avant de charger le contenu QML.

+0

Ai-je raison de penser que je dois encore apporter dans les différentes dépendances Qt (installer divers paquets -dev). –

2

La variable d'environnement QML_DISABLE_DISTANCEFIELD contrôle cela. Si vous mettez

qputenv("QML_DISABLE_DISTANCEFIELD", "1"); 

au début de votre principale, vous obtiendrez un rendu de texte agréable et forte partout.

Source: http://www.kdab.com/~thomas/stuff/distancefield.html