Trolltech heeft even geleden versie 4.4 van hun programmeerframework Qt vrijgegeven.Als gebruiker van de open source editie van Qt ben ik al jaren meer dan tevreden van Qt,
en daarom wil ik jullie wel eens vertellen wat er zoal nieuw is in deze versie.
Voor degenen die het niet kennen:
Qt is een open source framework waarmee op een eenvoudige wijze (met een zeer consistente API en
zeer volledige documentatie) cross-platform programma's geschreven kunnen worden die draaien op onder andere Linux, Windows, Mac OS X en mobiele apparaten zoals GSM's of PDA's met Linux (via Qt Embedded of Qtopia). Sinds versie 4.4 is er ook ondersteuning voor Windows CE bijgekomen! Je schrijft met Qt 4.4 éénmaal de code op een platform naar keuze (Linux, duh!) en de code zal werken op elk ander platform dat ondersteund wordt (mits hercompilatie in de meeste gevallen).
Qt 4 is de toolkit die wordt gebruikt voor KDE 4, en is de nieuwe versie van de (ondertussen verouderde) toolkit Qt 3 die wordt gebruikt voor de huidige *stabiele* versie van KDE; KDE 3.5. Hoewel KDE 4 nog een aantal bugs bevat is dit niet de schuld van Qt 4. KDE 4 is gewoon nog relatief nieuw, maar versie 4 van de Qt toolkit zelf is al 3 jaar lang in ontwikkeling en is zeer stabiel en volwassen.
Dus, wat is er nieuw in versie 4.4?
DEMOHet demoprogramma bij Qt 4.4 ziet er zo uit. Het geeft je een idee van wat voor user interfaces er ontwikkeld kunnen worden met Qt 4.4 door gebruik te maken van (onder andere) het Paint framework, het Animation framework, en door OpenGL overpainting (Paint + OpenGL API mix)
PS: er zitten duizenden voorbeelden in het demoprogramma, ik heb alleen de categorie "demo's" laten zien omdat deze categorie de leukste programma's bevat omdat ze wat uitgebreider zijn dan de simpele voorbeeldprogramma's.
http://nl.youtube.com/watch?v=f2qBUCghAJwWeb framework: WebkitDe Webkit webbrowser (de webbrowser die Safari van Mac OS X gebruikt, en die tegenwoordig ook beschikbaar is voor o.a. Konqueror en Epiphany) is nu geïntegreerd in Qt. Je kan webcontent en 'gewone' content met elkaar vermengen, of gewoon de technologie van Webkit ten volle benutten in je Qt 4 programma. En niet alleen rendering wordt ondersteunt, de HTML kan ook rechtstreeks bewerkt worden. Webpagina's kunnen van eender waar geopend worden (lokaal, server, resources...) dankzij integratie met de QtNetwork module.
Note: De demobrowser in Qt 4.4 is heel snel en compleet en werkt erg goed, maar het ontbreken van plug-ins zoals Flash, Java, mediaplayer... zorgen ervoor dat ik voorlopig Firefox zal blijven gebruiken. Plug-ins staan echter gepland voor Qt 4.5, maar dat zal nog een tijdje duren
Qt Everwhere: Windows CE ondersteuningQt 4 programma's werken sinds versie 4.4 ook op mobiele apparaten die zijn uitgerust met de mobiele Windows-versie Windows CE. Mobiele Linux-apparaten met Embedded Linux werden al langer ondersteund, dus met dit erbij kunnen er nu programma's geschreven worden voor een grote reeks van mobiele apparaten, zonder de code te hoeven aanpassen. Op Embedded Linux heeft Qt 4 trouwens geen X11 nodig zoals de concurrentie. Embedded Qt werkt rechtstreeks op de framebuffer met zijn eigen lichtgewicht 'windowing system'. Ook 3D (OpenGL ES) wordt ondersteund op mobiele apparaten!
Multimedia: PhononOok nieuw in deze versie is het Phonon framework dat in samenwerking met KDE werd ontwikkeld. Dankzij Phonon is het heel erg eenvoudig om simpele audio- en videoprogramma's te schrijven die werken op elk ondersteund platform. Op Linux wordt er gebruikgemaakt van GStreamer, op Windows van DirectShow en op Mac OS X van QuickTime.
Naast het afspelen van audio en video kan de videoweergave aangepast worden via een video equalizer en kunnen er geluidseffecten toegevoegd worden aan het geluid. Meer functies en directe toegang tot de audio- en videostream zullen misschien ook mogelijk worden, maar dat zal pas gaan gebeuren in versie 4.5.
Ik heb een videootje gemaakt van de demo audio/videospeler in Qt 4.4, maar jammer genoeg kon het geluid niet juist opgenomen worden (met recordmydesktop), dus heb ik dat eruit gelaten. Beeld je maar gewoon in dat op een gegeven moment het geluid plots sneller speelt
http://nl.youtube.com/watch?v=2W5wIqxezY0In het videootje zie je een video, op deze screenshot zie je een muziekbestand afspelen:
'3D Widgets': Widgets op Canvas/GraphicsViewDit valt ook moeilijk uit te leggen, dus laat ik het je gewoon zien met een videootje:
http://nl.youtube.com/watch?v=TLbO73oQaeUAlle QWidgets (ook zelfgemaakte) kunnen op een QGraphicsView geplaatst worden en op die manier getransformeerd worden via het Transformation en Animation framework van Qt 4. Heel cool, want input redirection werkt volledig! Plasma (de desktop/panel interface) van KDE 4 zal in de toekomst (daar is men bij KDE nu mee bezig) van dit systeem gebruikmaken omdat het sneller, efficiënter en makkelijker werkt dan de huidige Plasma.
Makkelijke en schaalbare multithreading: QtConcurrentQt ondersteunt al zeer lang multithreading en meerdere processors (al 8 jaar lang) maar het programmeren van multithreaded programma's is niet eenvoudig, hoewel Qt altijd al beschikt heeft over inter-thread communicatie en signal/slots die werken over verschillende threads.
Qt 4.4 heeft echter een nieuw framework op poten gezet dat bepaalde taken automatisch in aparte threads kan laten uitvoeren en automatisch laat schalen over meerdere processors zonder dat je veel moet snappen van multithreading.
XQueryHier weet ik maar weinig van, maar het komt er dus op neer dat Qt 4.4 nu ook XQuery ondersteunt
Meer info:
http://trolltech.com/products/qt/features/library/xml-network-dbEn naast dit alles......is er nu ook ondersteuning voor Visual Studio 2008 (en de nieuwste versie van Eclipse)
...bestaat er nu ook een IPC (inter-process communicatie) framework dat werkt via gedeeld geheugen
...is het hulpsysteem 'Assistant' verbeterd
...is de print- en netwerkondersteuning sterk verbeterd
...zijn er natuurlijk nog een heleboel andere bestaande dingen verbeterd en uitgebreid.