mboost-dp1

QT programmering i KDevelop


Gå til bund
Gravatar #1 - Cyrack
3. jun. 2005 08:52
Jeg vil gerne lære hvordan jeg programmere C++ med QT-interfaces, men indtil vidre har de guides jeg har fundet ikke været til megen hjælp. Jeg bruger KDevelop (kun CLI-programmer so far) og derfor er GUI-programmering meget nyt for mig, ikke mindst i C++ (har tidligere rodet med MS visual Basic, men der er nok ikke megen hjælp at hente der fra :-))

Mit C++ niveau er forholdsvist lavt (som sagt, kun CLI applicationer, der løser de elementære ting som partiel backup osv. (kun skrevet i C++ fordi jeg kan :-)), men jeg vil gerne lære c++ og QT-interfacet på samme tid.

Bottomline: hvis nogen har en god guide eller et lille eksempel på hvordan man bruger QT så vil jeg gerne have det.

Basalt har jeg brug for følgende viden:
o Brug af QT-interfacet
o Opbygning af QT-interface (har fundet et program der fuldte med til KDevelop, kan bare ikke huske navnet pt.)
o Interaktivitet med QT objecter (kanpper, tekstfelter)
o Brug af eksterne libraryes (libjpg osv.)

Målet med mit første projekt bliver et foto-album med en MySQL backend, der kan eksportere til HTML (når jeg engang kommer så langt, men svj kan se betyder det jeg kommer til at bruge en masse forksllige libraryes og API'er hvilke vel egentlig er en fordel.

Hvis nogen vil hjælpe en n00b i gang med lidt mere avanceret programmering så vil jeg være utrolig glad :-)
Gravatar #2 - bugger
3. jun. 2005 10:34
Føj Qt, rigtige mænd bruger Gtk ;)

Har du prøvet KDEs hjemmeside? http://developer.kde.org/documentation/
Gravatar #3 - Cyrack
3. jun. 2005 10:59
Eftersom jeg er KDE-luder, så vil jeg helst code til et system jeg er vant til at bruge.
Når jeg er blevet mere trænet burde det ikke være voldtsomt svært at lave en application der både understøtter qt og gtk (selv om det er langt over mit nuværende niveau).
Gravatar #4 - bugger
3. jun. 2005 19:23
Yes, der skal være plads til alle, men er der ikke en af de guides på KDEs side du kan bruge?
Gravatar #5 - Cyrack
5. jun. 2005 09:20
bugger:

Jo, det glemte jeg helt at skrive. Jeg er ved at læse dem nu (og fuske lidt rundt deres kode for at se hvordan det virker). Der er i hvert fald en masse jeg kan bruge, og mon ikke jeg også kommer til at lære lidt mere om det? :-)

Ang. QT vs. GTK:
Jeg har læst lidt mere om GTK, og selv om GTK-applicationer genrelt ser ud af **** i KDE (i forhold til ens theme) så må jeg indrømme at det er smart, at GTK let kan porteres til bla. windows, hvor QT applicationer kræver at man køber en licens af trolltech til QT til windows. Hvad jeg vælger skal jeg lige hitte ud af, men jeg er faktisk ved at være vold forelsket i GTK :-)
Gravatar #6 - SKREWZ
5. jun. 2005 13:39
#5 -- Cool. Jeg har arbejdet med at sætte mig ind i programmering i GTK+, og var stoppet halvvejs, med præcis samme argumentation som du selv.
Altså er det ret cool, at du nu kan sige, at du er ved at blive vold-forelsket i GTK+. Det afgør nemlig mit valg.
http://www.gtk.org/tutorial

/me børster gammel kaffe af sin GTK+2.0-tutorial. :)
Gravatar #7 - SmackedFly
5. jun. 2005 16:00
Jamen velkommen i klubben, så må jeg hellere være lidt hjælpsom :)

Og nu skal du se, istedet for et eksempel får du en
QT Bog.

Den blev fornyligt udsendt gratis af forlaget, og det er en officiel bog der gennemgår hele QT.

Mht. hele Windows er ikke gratis med QT tingen, så kan jeg fortælle at QT4 som bliver udgivet indenfor ikke så længe vil have både Linux og Windows udgaven under GPL, men jeg vil stadig anbefale at du kaster dig over 3.x først, og så kigger på qt4 senere, de generelle principper er de samme, den eneste store forskel er at med QT4 ligger de op til at den visuelle kode og din model kode er sepereret, hvor QT3 havde en tendens til at smække det hele i en bunke, hvis man ikke tænkte sig om.
Gravatar #8 - Cyrack
5. jun. 2005 16:09
SmackedFly

Takker :-)
Måske skulle jeg, for udfordringens skyld) lære begge dele.
Efter som jeg aldrig før har arbejdet i andet end visual basic (skod, men let at lære) og php-gtk (af GUI-programmer) aner jeg fx. ikke hvordan jeg spawner vinduer, laver knapper/whatever af controls; endsige tilknytter funktioner til signaler/events.
Det er (naturligvis) min førsteprioritet at lære disse basale skills... Rent kodemæssigt og funktionsmæssigt har jeg en masse at trække på fra PHP og CLI c++... jeg kan bare ikke finde den rigtige vinkel på hele det her GUI-noget... Elsker CLI... dejligt simpelt... :-)
Gravatar #9 - SmackedFly
5. jun. 2005 17:05
#8

Tja, GUI siden er slet ikke det svære, QT gør det enormt let at arbejde med, ikke mindst pga. brugen af signals og slots.

Hvis du vil spawne et vindue i QT, gør du ikke andet end at lave en instans af et element, f.eks:
/**/
mitNyeVindue mainWidget;
mitNyeVindue.show();
//Viser vinduet, du kan også vælge at lade det være skjult, lave ændringer på det, og så senere vise det.
/**/

Vinduerne vil du typisk designe i f.eks. QT designer, og der kan du indsætte forskellige elementer, f.eks. knapper, et canvas, menuer eller hvad du nu har brug for. Hvert eneste element giver du så et navn. Og derefter kan du så kalde funktioner på det navn, når du har oprettet elementet, disse elementer vil automatisk blive initialiseret når du initialiserer dit widget.

f.eks.

/**/
QString hej = (navn->text()).stripWhiteSpace();
/**/

Funktionen kalder et tekstfelt der hedder navn, og beder det returnere teksten. Derefter kalder den det tekst objekt den får tilbage, og beder det fjerne alle mellemrum :).
Bemærk at en String somregel ikke vil være nok, da qt arbejder i unicode, derfor har den sin egen qstring klasse der er unicode. Derudover bør du også være opmærksom på at koden kun virker når den kaldes fra den specifikke widgets gui klasse, ellers skal du angive hvilken widget navn tilhører, med :: operatoren :)

Nå anyway, håber det gav en smule ide om hvordan det fungerer, om ikke andet kan det være det kan give nogen blod på tanden.

Det største problem jeg er røget ind i med GUI arbejde er at finde noget at bruge det på, for det er enormt nemt. Udfordringen har for mig ligget i at lære de C++ relaterede ting som jeg ikke lige havde forstået før jeg nåede til det. Så for mig at se er det mest af alt C++ viden man bør have godt styr på, men det kommer af sig selv...:)
Gravatar #10 - Cyrack
6. jun. 2005 07:49
SmackedFly:

Wee :-) Jeg vidste egentlig godt alt det du skrev, men nu forstår jeg det :-)

Desværre er jeg hos de gamle for tiden, så jeg kan ikke engang afprøve min nye viden før torsdag.... *suk* (why oh why?)

Men jeg takker i hvert fald herfra :-) håber det er i orden hvis jeg overfalder dig senere med en million spørgsmål (de vil komme) :-D
Gravatar #11 - SmackedFly
6. jun. 2005 14:38
#10

Jeg klarer den nok, men jeg er nu ikke noget QT leksikon, jeg kan det grundlæggende og lidt til...:)
Gravatar #12 - SKREWZ
6. jun. 2005 15:03
#10 & #11 -- Kunne I bespamme denne tråd, til den tid?
.. Om ikke andet, for at gøre jeres vidensudveksling offentligt tilgængelig?
Gravatar #13 - Cyrack
7. jun. 2005 06:20
#12 - SKREWZ

Al min kode (som altid) er til at finde som GPL. Når jeg, i (forhåbentlig) nær fremtid tager mig sammen, så kommer der nogle gamle php-projekter op på cyrack.dk, lige som jeg også smider alle mine QT/GTK-programmer op, men lidt kommentarer, om ikke andet så andre kan se hvordan man ikke skal gøre :-)

(Btw. GPL er sejt for hjemmeudvikleren, ingen må leeche og misbruge, men alle kan forbedre... elsker GPL).
Gravatar #14 - SKREWZ
7. jun. 2005 06:24
#13 -- Hehe, indeed. GPL er såmænd også sejt for virksomheden, det offentlige, institutioner og andre steder.

.. Det mener jeg, i hvert fald.
Gravatar #15 - Cyrack
7. jun. 2005 06:40
SKREWZ:
Ja, også til virksomheder... glæder mig faktisk lidt til jeg skal begynde på Datamatikeruddannelsen, for jeg har allerede snakket med et par stykker der går der, og deres meninger er meget blandede om GPL, nogen er fortaler, andre meget i mod, men genrelt er stemningen blandt underviserne vist, at GPL er djævlens værk... de får det hårdt når jeg dukker op :-D

Anyway, hvis du har lyst kunne vi måske lave et newz.dk team hvor vi kan hjælpe hinanden med QT/GTK papplikationer og andre tips og triks? Ved godt der findes mange community-sites, men jeg synes sq det er små-svært at få foden indenfor (specielt når talen falder på C++). Man skal næsten være ekspert hvis man ikke vil flames, når man spørger om simple ting :-(
Gravatar #16 - SKREWZ
7. jun. 2005 09:27
#15 -- Jep, du har ret. Ideen er god, men jeg ved ikke, hvor meget tid jeg får i overskud til at sætte mig ind i GTK+. Jeg har en x-y-koordinator at lave, og softwaren til den skal sandsynligvis være rent konsol-baseret.

Men, jow. Vi kan skrive til hinanden via newz, eller lignende.

Nogen andre, som vil være med? :)
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login