Overgang fra Qt 4.x til Qt5.

Overgang fra Qt 4.x til Qt5.

En Ar Bg De El Es Fa Fi Fr Hei Hu Det Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh.

Overgangen fra Qt 4.x til Qt 5 forventes ikke a v re signifikant. Modulariseringen av Qt-kodebasen krever imidlertid en del endringer i prosjektkonfigurasjonen, for eksempel bruk av «headers» og konfigurering av prosjektbygningsinnstillinger (for eksempel endringer i * .pro-filene).

Qt Creator (master) er kompilert ved hjelp av Qt 4 og Qt 5; Du kan referere til kildene for a fa oversikt over hva som kreves for a sende et program og holde kildene bakover kompatible med Qt 4.

QtWidgets som en separat modul.

eksempel kompilere tidsfeil.

Legg til dette i din * .pro-fil:

Endre alle forekomster av.

Koden skal fungere na, men noen ganger ma du kanskje v re mer eksplisitt:

QtWebKitWidgets er ogsa en egen modul:

eksempel kompilere tidsfeil.

Legg til dette i din * .pro-fil:

Merk: Nar du har QT + = webkitwidgets trenger du ikke QT + = widgets.

I tillegg erstatte alle forekomster av.

Du kan prove dette ved a portere et WYSISWYG html-editor fra Qt 4 til Qt 5.

QPrinter virker ikke.

Hvis koden din har folgende linjer:

legg til folgende i prosjektfilen din:

Igjen, noen ganger kan det ikke fungere, og du ma v re eksplisitt:

tilAscii () og fraAscii () Metoder blir utdatert.

Erstatt alle forekomster av.

For eksempel, gitt Qt 4-koden.

du ville bytte til.

QCoreApplication :: UnicodeUTF8 er utdatert.

Denne enum typen brukes til a definere 8-bits koding av tegnstrengargumenter for a oversette (). Denne enmen er na foreldet, og UTF-8 vil bli brukt i alle tilfeller. Sa fjern alle forekomster av QCoreApplication :: UnicodeUTF8. For eksempel:

QWorkspace er utdatert.

Denne klassen er foreldet og ble erstattet av QMdiArea-klassen i Qt 4.3. I Qt 5 er QWorkspace fjernet. Den nye klassen har en lignende API til QWorkspace og porting den involverte bare a endre navnene pa noen fa metoder, signaler og spor.

QDrag Problemer.

Apper som har slipp og dra funksjonalitet vil trenge litt justering. En linje som.

i Qt 5 vil generere feilen.

For a fikse dette legges blant de inkluderer:

qFindChildren er deprecated.

En feil vil komme pa denne maten:

For a lose dette erstatter du qFindChildren med findChildren, for eksempel i.

qVariantValue er utdatert.

Din kompilator vil si.

Denne funksjonen tilsvarer QVariant :: verdi & lt; T & gt; (verdi). Derfor omskrives linjen hvis gitt en QVariant val.

Denne QTime vedlagt i de vinklede parentesene lar kompilatoren vite hvilken QVariant som kommer tilbake. Men hvis variabelen ikke er en QVariabel, bor typen som er vedlagt i de vinklede parentesene ikke brukes (dette vil resultere i en vag kompileringstidsfeil). Sa gitt at m_color er av typen QColor, vil du skrive om.

qVariantCanConvert er utdatert.

Qt :: escape er utdatert.

Sa du vil endre folgende blokk:

Denne prosedyren kan automatiseres av et portingsverktoy fra KDAB.

QDesktopServices :: storageLocation deprecated.

CONFIG + = qtestlib er utdatert.

Hvis du har den ovennevnte linjen i prosjektfilen din, vil kompilatoren advare deg i kompileringsvinduet, men koden vil likevel fortsatt kjore som vanlig:

QWeakPointer quirks.

En kodeblokk som.

For a fikse dette legges til prosjektfilen:

QtConcurrent Library mangler?

I Qt 4 var QtConcurrent en del av QtCore, sa det var ikke nodvendig a inkludere bestemte overskrifter. Dette er ikke lenger tilfelle med Qt 5. Hvis kildekoden din har linjer som.

Du ma inkludere overskriften:

og legg til folgende linje i prosjektfilen din:

Fastsetting # inkluderer & lt; & gt; Overskrifter.

Et Perl-skript «fixqt4headers.pl» finnes i qtbase / bin /. som skal kjores pa kildekoden ved hjelp av Qt som korrigerer # inkluderer & lt; & gt; Direktiver for Qt-komponenter skal ogsa vurdere modulnavnet.

Plugin loading.

Q_EXPORT_PLUGIN, Q_EXPORT_PLUGIN2-makroene har blitt avskrevet til fordel for den nye Q_PLUGIN_METADATA makroen. Fordelen med det nye systemet er at det tillater Qt a sporre metadataene for plugin uten a faktisk dlopen’ing det. Dette forbedrer ytelsen og paliteligheten til pluginsystemet.

Den nye Q_PLUGIN_METADATA makroen er inkludert ved siden av Q_OBJECT-makroen i QObject-avledet klasse som returneres nar du legger inn plugin. Den inneholder pluginene IID og et filnavn som peker pa en json-fil som inneholder metadataene for plugin. Json-filen er kompilert i plugin-modulen og trenger ikke installeres.

Et eksempel pa hvordan du endrer pluginene dine, kan du finne ved a se pa oppdateringen som endrer Gif-bildeformatpluggen, se http://code.qt.io/cgit/qt/qtbase.git/commit/?id=963b4c1647299fd023ddbe7c4a25ac404e303c5d.

Utplassering til systemer uten C ++ 11.

Nar Qt er bygget fra kildekoden pa et system med C ++ 11 installert, er Qt-bibliotekene / rammene koblet sammen med systemets C ++ 11-bibliotek (libc). Dette betyr at Qt-bibliotekene / rammene ikke kan distribueres til systemer uten C ++ 11 installert (for eksempel Mac OS X 10.6 utenom boksen). For a kunne distribuere til systemer som bare stotter den eldre C ++-standarden (libstdc ++), bygger Qt fra kildekoden med alternativet -no-c ++ 11 configure.

QTimer er ikke lenger noyaktig til millisekund som standard.

QTimer har na 3 noyaktighetstyper, med en ny standardadferd:

Den nye standardtypen er Qt :: CoarseTimer som, for a redusere strom / CPU-forbruk, tillater 5% forskjell mellom onsket tid og den faktiske en, og tillater selv at timeren brenner for onsket tid. Den tidligere er Qt :: PreciseTimer (til millisekunden, aldri for den forespurte tiden). En tredje er Qt :: VeryCoarseTimer og tillater en 1 sekunders forskjell.