2014-09-05 15 views
8

Sto usando Qt5 in Windows. Ho appena creato un semplice progetto di piccoli widget in Qt Creator. Ho un QMainWindow con un widget di modifica del testo all'interno. Ho attivato il layout verticale, quindi la modifica del testo consuma tutta la parte interna della finestra principale (che è quello che voglio, sto provando a creare una piccola app per blocco note).Strana pittura ritardata con Qt5 su Windows

Mentre trascino l'angolo in basso a destra della finestra principale durante l'anteprima (faccio clic sul triangolo verde in basso a sinistra) vedo un leggero ritardo nel ridimensionamento del widget figlio. Non si ridimensiona esattamente con la finestra genitore sullo stesso frame di rendering (sembra che ci siano 1-2 fotogrammi di rendering dietro).

Mi ricordo anni fa che mi occupavo di rendering ritardo come in API Win32 vecchia scuola. Ricordo che dovevo eseguire il rendering a doppio buffer in una bitmap fuori schermo per correggerlo (o qualcosa del genere, era da molto tempo).

C'è un modo per risolvere questo "ritardo di rendering" in Qt? Posso solo immaginare che questo è specifico per Windows e potrebbe non avere impatto su altre piattaforme, anche se non ho testato. Se ho bisogno di fornire maggiori informazioni fammi sapere.

+3

Non conosco la risposta, ma suggerisco di compilare ed eseguire l'app di esempio "textedit" in $ QTDIR/qtbase/examples/widgets/richtext/textedit e vedere se presenta lo stesso problema. Se è così, potrebbe essere solo un artefatto del modo in cui Qt è implementato in Windows; in caso contrario, controlla l'applicazione di esempio textedit in modo diverso rispetto all'app. (FWIW Non vedo alcun ritardo durante il ridimensionamento sotto MacOS/X con Qt 5.3.1) –

+1

Grazie per il consiglio Jeremy. Ho eseguito il campione e sto ancora vedendo il problema. –

+1

Potrebbe per favore includere del codice così? Quindi potrei provarlo e forse aiutarti. –

risposta

4

È probabile che si tratti di un problema con Windows, non di Qt. Più la tua finestra è pesante, più è notevole la tua finestra.


Ho analizzato lo stesso problema qualche tempo fa. Avevamo una finestra piuttosto complicata per la GUI, con diversi widget che mostravano viste 2D e 3D dei dati. Ridimensionando la finestra usando l'angolo in basso a destra è risultato un horror ridisegna-ridisegna. Sfortunatamente sembra che il problema non sia legato a Qt, ma piuttosto al modo in cui Windows gestisce il ridisegno di una finestra ridimensionata. Sono stato in grado di notare il problema anche nel file explorer su Windows 7. Qt utilizza effettivamente il doppio buffering per impostazione predefinita (come menzionato nel commento di @Bim). Ho anche provato ad attivare esplicitamente gli eventi ridipinti di Qt. Questo ha aiutato un po ', ma non ha risolto il problema. Quindi, dopo molti sforzi, abbiamo deciso di conviverci.

+0

Giusto per aggiungere: "abbiamo deciso di conviverci." questo è probabilmente l'unico modo corretto per gestirlo. Anche i prodotti Microsoft come VS2015, Outlook, Explorer, ecc mostrano questo comportamento, quindi anche MS "vive con esso". –