2015-06-13 22 views
9

Sto sviluppando una semplice applicazione QML in questo momento e ho notato che ridimensionare e spostare una finestra QML genera un brutto sfarfallio rispetto a una finestra QtWidgets, ad esempio.Finestra QML ridimensiona/sposta sfarfallio

Così ho creato 2 applicazioni di test per mostrare la differenza:

QWidgets:

enter image description here

QML:

enter image description here

Come si può vedere t la versione QML della sfarfallio dell'applicazione è piuttosto brutta mentre quella QtWidgets è pulita. Ora questo diventa piuttosto brutto quando l'interfaccia utente diventa più complessa.

Avete qualche conoscenza al riguardo? è un insetto? C'è qualche soluzione/soluzione alternativa per questo problema?

+0

Quale scheda video utilizzi? – Milovidov

+0

@Milovidov Sto usando l'Intel HD Graphics 4000 integrata che è integrata in un Core i5-3360M di Intel. –

+3

Intel ha problemi con l'implementazione di OpenGL. Cerca di ottenere o compilare qt senza OpenGL. In questo caso, Qt Quick dipingerà come widget nativi, come la soluzione di widget qt. – Milovidov

risposta

3

Si può provare questo:

int main(int argc, char* argv[]) { 
QCoreApplication::setAttribute(Qt::AA_UseOpenGLES); 
or 
QCoreApplication::setAttribute(Qt::AA_UseSoftwareOpenGL); 

La prima opzione utilizza la libreria angolo OpenGl2DirecX (come Google Chrome)

Il secondo utilizza l'emulazione OpenGL da un software ... per i piccoli programmi funzionano molto bene e è compatibile al 100% con vecchi sistemi operativi come Windows XP.

Nota: Si può provare con Qt 5.7 e nuove Qtquick.Controls 2,0 ... rende molto di più ... https://blog.qt.io/blog/2016/06/10/qt-quick-controls-2-0-a-new-beginning/

+0

Provato sul mio PC Windows 7 con Qt 5.6.2 e Intel Graphics 4000. Con Qt :: AA_UseOpenGLES si comporta molto meglio! Grazie! – mrAlmond

1

Nel mio caso, ho risolto questo con l'aggiunta della bandiera successivo:

QQuickWindow::setSceneGraphBackend(QSGRendererInterface::Software); 

Ma questo aggiungerà altri problemi di rendering. O no.