Basic principen är att du skapar din GUI (skriver egen kod eller bygger den med ett program). Sedan så kopplar du signaler (för att använda QT/KDE termer) så när te.x. någon klickar på en knapp i din GUI så kommer en viss funktion att anrops antagligen med något argument du har specifierat.
Med te.x. textrutor, sliders och radio buttons så är du antagligen mer intresserad för innehållet i dem, dvs vad som står i en textruta, vilket värde dina radio buttons har osv.
Detta gör att programflödet blir annorlunda än i ett "vanligt" program.
Kod: Markera allt
main() {
while(villkor) {
do_stuff();
läs_input();
osv osv...
gör_lite_annat();
}
}
I ett gui program så blir flödet mer nåt i stil med det här
Kod: Markera allt
main() {
init_gui();
skapa_gui();
osv...
qt_main_loop(); <--- Här så kommer flödet att tas över av QT
exit();
}
//denna funktion körs när en knapp har blivit nedtryckt. När den returnera så kommer
// QT att ta tillbaka kontrollen över programmet.
knapp_tryckt(info) {
if(info == något) {
gör_något();
} else {
gör_annat();
}
}
Detta är dock inte helt sant, utan man brukar har 2 trådar. En för GUI funktioner samt en "worker thread" där du gör själva arbetet i. Då när du får ett knapptryck så kommer du bara att lägga in gör_något(); eller gör_annat(); i en kö och din arbetar tråd gör detta när den har tid. Detta medför att du inte låser GUIn om du ska göra nåt stort. Detta behövs dock inte alltid om man ska göra enkla program.
Hoppas det klarnar lite mer om skillnaderna mellan GUI programmering och "vanlig" programmering nu.