Qt – varför jag tycker det är bra!

Qt börjades utvecklas 1991 av Trolltech tills 2008 då Nokia köpte upp det. Så det har en väldigt lång historia.

Ett ramverk som jag ofta propagerat för som något självklart med argumentet att man kan utveckla crossplatform-applikationer. Och det hela började med KDE, jag tittade och läste kod ibland när jag kompilerade det och tyckte att det såg ganska lätt och enkelt ut. Första gången jag använde Qt var när jag gick på gymnasiet 2004.

Starbudgetti - ett budgetprogram jag gjorde.

Starbudgetti - budgetprogram som jag skrev med Qt version 3 någonting..

Började programmera ett program för att enkelt hålla koll på sin budget, StarBudgetti hette det. Min historia sen tidigare är att jag använt mig av Visual Basic som RAD-verktyg, och Qt tilltalade mig på den tiden då det hade ett verktyg för att designa gränssnittet. Man kunde lätt tilldela en knapp att lyssna på en onClick-händelse eller något annat objekt att lyssna på en onMouseOver-händelse; och sedan en funktion som skall triggas när den händelsen inträffar. Smidigt helt enkelt!

Med tiden så tyckte jag att det fanns vissa begränsningar i det sättet, och jag tyckte inte riktigt om tillvägagångssättet att låta programvaran ta kontrollen över hur koden skulle genereras när det gäller gränssnittet. Så med tiden började jag knacka gränssnittet i kod och inte bara för det som skulle hända när man trycker på knapparna.

Användning av QObjects Moc för dynamiskt Gui

Dynamiskt GUI med hjälp av QObject och QMetaObject; data hämtas från Xml-fil.

Alla C++ toolkits har i stora drag ett väldigt komplett klass-bibliotek som gör det väldigt snabbt att programmera det man vill ha, dialogfönster, layouthantering, socket och trådhantering. Så även Qt. Allt detta har sin grund i klassen QObject i Qt.
QObject är hjärnan i navet.

Varje QObject har en QMetaObject klass som kan innehålla metainformation om ditt objekt, objekt som kan vara en knapp, listbox, text-yta, socket etc. Den metainformationen kan vara tex klassnamn.

Programmeringen blir väldigt dynamisk tack vara QObject. Ett gränssnitt kan presentera olika grafiska objekt baserat på ett par villkor men härstamma ur en deklarerad QObject.
Och det går väldigt lätt att skapa olika grafiska objekt dynamiskt under runtime, och hitta dom, då det finns QMetaObject, där du kan ange klassnamn. Så du kan skapa en namnkonvention.

Ett exempel på detta finns här. Det är mitt projekt ”time” på github. Det här kod på rad 258 som är relevant i detta syfte, funktionen init(), som läser in en xml fil som innehåller schema för tidtagningar och hur långt tid det får ta på respektive. På rad 287 finns en kommentar om det.

Det var ett tag sedan jag jobbade på det projektet, och det finns en del optimering man kan göra och saker för att göra det snyggare. Men ni får ett grepp om hur det fungerar.

Något ytterligare smidig grej är WebKit som numera ingår, det gör det så enkelt att göra en mashup av webbaserade tjänster och klientprogramvara. Jag gjorde ett par häftiga grejer för att skapa produktblad från webbsidor till pdf format med hjälp utav detta. Jag lovar ingenting, men ett blogginlägg om det vore inte fel!

Integration med Google Maps med hjälp av Qt.

Qt Webkit google maps exempel

Dokumentationen är underbar, den innehåller många exempel. Det är nog tack vare den som jag kunnat hanka mig fram och lära mig detta något sådär!

Så jag kan starkt rekommendera dig att utvärdera Qt! Har ni några frågor så ställ dom som kommentarer.

Det här inlägget postades i Programmering och har märkts med etiketterna , , , . Bokmärk permalänken.