2015-04-19 7 views
7

Questo è un esempio degli esempi Qt Quick all'interno di Qt Creator, quando eseguo il progetto tutti i testi hanno perso la loro qualità e sfocato, l'immagine allegata descrive chiaramente il problema.Offuscata Qt Quick Text

Qt Versione: 5.4.1

Piattaforma: Windows 7

enter image description here

+0

Come posso risolvere quello? –

+5

Provare a impostare il testo renderType su ** Text.NativeRendering ** http://doc.qt.io/qt-5/qml-qtquick-text.html#renderType-prop – danielfranca

+1

Sembra un bug del driver grafico per me. I pulsanti rendono automaticamente il rendering nativo a questo non può essere il problema. –

risposta

4

Si tratta di un vecchio bug che possono essere riprodotte su alcuni hardware quando Qt utilizza le funzionalità di sistema OpenGL "[QTBUG-31983] Font rendering on Windows XP shows artifacts with QML Text element"

Prima Qt versione 5.5 ci sono due tipi di Qt versioni per Windows: Angolo e OpenGL. Essi possono essere distinti dal suffisso "opengl" nel nome del file di installazione, ad esempio:

qt-opensource-windows-x86-msvc2013_opengl-5.4.1.exe 
qt-opensource-windows-x86-msvc2013-5.4.1.exe 

Vedere "Qt 5 on Windows ANGLE and OpenGL" per la spiegazione.

La build ANGLE non presenta tale difetto. È interessata solo la build OpenGL. OpenGL è scarsamente supportato di default su molte installazioni di Windows. In alcuni casi può bloccarsi durante l'inizializzazione della finestra QML. Era richiesta l'installazione manuale del driver video. Tuttavia, per alcuni vecchi hardware è un problema trovare un driver di scheda video così buono che abbia abbastanza supporto per OpenGL.

Possibili soluzioni:

  • Usa ANGOLO Qt costruire
  • E 'possibile creare una sottoclasse del controllo standard QML Text con predefinito tipo Text.NativeRendering di rendering:
Text { renderType: Text.NativeRendering; } 

ANGOLO Qt build potrebbe essere una buona soluzione se Windows XP non dovrebbe essere supportato.

Se non è richiesto un uso intensivo della grafica, la soluzione migliore è utilizzare il software di rendering OpenGL. Prima di Qt 5.4 è stato possibile utilizzare la libreria MSYS Mesa opengl32.dll (si dovrebbe usare solo una versione specifica). Se tale libreria viene collocata nella cartella eseguibile dell'applicazione Qt creata con la versione Qt OpenGL, tale libreria viene automaticamente utilizzata per il rendering del software invece del rendering hardware predefinito. A partire da Qt 5.4 tale libreria è fornita da Qt: opengl32sw.dll (http://doc.qt.io/qt-5/windows-requirements.html).

Il software di emulazione OpenGL funziona perfettamente su tutti i tipi di hardware e non richiede alcun driver di scheda video speciale.

A partire da Qt 5.4 c'è l'attributo di applicazione Qt::AA_UseSoftwareOpenGL:

Forze l'utilizzo di un'applicazione OpenGL software basato su piattaforme che utilizzano il caricamento dinamico di attuazione OpenGL. Questo sarà in genere una versione patchata di Mesa llvmpipe, che fornisce OpenGL 2.1.Il valore potrebbe non avere alcun effetto se nessuna implementazione OpenGL è disponibile. Il nome predefinito di questa libreria è opengl32sw.dll e può essere sostituito con impostando la variabile di ambiente QT_OPENGL_DLL. Vedere le pagine specifiche della piattaforma, ad esempio Qt for Windows, per ulteriori informazioni . Questo valore è stato aggiunto in Qt 5.4.

0

Ciò rende il tipo di carattere con il rendering nativo. Ma non risolve il problema con il rendering Qt predefinito.

import QtQuick 2.4 
import QtQuick.Window 2.0 

Window { 
    visible: true 
    width: 512 
    height: 300 

    Text { 
     anchors.centerIn: parent 
     text: "Hello World!" 
     renderType: Text.NativeRendering 
    } 
} 
Problemi correlati