
CÍMLAP
Varga Péter
Qt strandkönyv
TARTALOM, BEVEZETÉS
Tartalom
Bevezetés
Miért pont Qt?
Néhány egyéb tudnivaló
1. Pár szó az eseményvezérelt programokról
2. Első programunk. Igen, a "Helló világ!", de kicsit bővebben
2.1. A grafikus objektumok és a Property Editor
2.2. A signals and slots mechanizmus
2.3. Elég a kattintgatásból!
3. Saját signal és slot megvalósítása - meg egy kis QDebug és QMap
3.1. Először slot-ot készítünk
3.2. A QMap és a köszönések
3.3. Most pedig signal-t írunk
4. Akinek nincs esze...
4.1. A QListWidget színre lép, és megismerkedünk az elrendezések fontosságával
4.2. A QListWidget elemeinek manipulációja
5. Mentsük, ami menthető!
5.1. QStringList a feladatok átadására
5.2. Menük és QAction-ök
5.3. A FileOperator osztályunk - QFileDialog, QMessageBox és egyéb veszedelmek
5.4. Iterátor a la STL és a la Java - na és a foreach
6. A feladatokhoz kategóriákat rendelünk
6.1. A Task osztály
6.2. A QList<T> sablonosztály, és némi őrület a mutatókkal. Megismerkedünk a QSharedPointer osztállyal
6.3. A ToDoList-et felkészítjük a kategóriák használatára, de még nem használunk kategóriákat
6.4. Kategóriák költöznek a ToDoList-be
7. Módosítható feladatok, felajánlott kategóriák és alapértelmezetten betöltött feladatlista-fájl
7.1. A már megadott feladatok módosítása
7.2. Kategóriák felajánlása a QCompleter osztály használatával. Első pillantás a modellekre
7.3. Automatikus fájlbetöltés a program indulásakor - a QSettings osztály
8. Keresés, grafikon és többnyelvűség
8.1. A keresőfül
8.2. Grafikussá válva grafikont rajzolunk, és a tetejébe még iterálgatunk is
8.3. Többnyelvű alkalmazás és a QT Linguist
9. Ikonok, ablakok, automatikus mentés
9.1. Ikonok és QAction-ök a QToolBar-on
9.2. Módos és egyéb párbeszédablakok, a QTextBrowser és újabb adalékok az erőforrásfájlok természetéhez
9.3. Automatikus mentés a QTimer osztály használatával
10. Komolyan használni kezdjük a Model-View minta lehetőségeit
10.1. Elem-alapú és modell-alapú widget-ek
10.2. Újratervezés
10.3. Mit tartunk meg az előző változatból?
10.4. A főablak kialakítása
10.5. A modell, meg az osztály, ami kezeli
10.6. Kényelem mindenekfelett
10.7. Bevetjük a QItemSelectionModell osztályt
11. Adatmentés és -visszatöltés modell használatakor
11.1. A Beállítások ablak
11.2. A FileOperator osztály reinkarnációja
11.3. Utolsó lehetőség a mentésre - a QMessageBox osztály további lehetőségei és a Q_PROPERTY makró
11.4. Automatikus mentés és megnyitás
12. A modell, a delegált, meg a proxymodell
12.1. Delegált megvalósítása a QStyledItemDelegate osztály használatával
12.2. A keresőfül és a QSortFilterProxyModel osztály
13. Hálózati szinkronizáció: a ToDoList felhőcskéje
13.1. A webszerver előkészítése
13.2. Kiegészítjük a beállítás-ablakot
13.3. Feltöltés a WebSynchronizer osztállyal - a QNetworkAccessManager és egyéb hálózati örömök
13.4. Letöltés a WebSynchronizer osztállyal - a QNetworkReply osztály és a fájlok kicsomagolása
14. Többszálú programot írunk
14.1. Tanulmányprogram a szálak tanulmányozására
14.2. Szálakat építünk a ToDoList-be
15. XML-fájlba mentjük a feladatlistát
16. A ToDoList, mint SQL-kliens
16.1. Gyomlálunk
16.2. Első QSqlTableModel-ünk
16.3. Törlés és visszavonása - barkácsoljunk kézzel QSqlRecord osztályú objektumot!
16.4. Keresés és kiegészítés a QSqlQueryModel osztállyal
17. Egyszerű Qt-program csomagolása Linux-rendszerekhez
17.1. Telepítőcsomag készítése Debian alapú rendszerekre
18. Kirándulás a Qt Quick-szigetekre (meg a QML tengerébe)
18.1. QML-programot írunk
18.2. Oda-vissza Qt és Qt Quick között: így beszélgetnek egymással a hibrid programok részei
Búcsú
Milyen osztályokról, makrókról és egyéb szépségekről van szó a könyvben?
Bevezetés
A Qt strandkönyv a Qt keretrendszerről szól. Nincs benne románc, feszültség
és dráma, azaz végső soron nem is igazi strandkönyv, de egy kicsit mégis:
habkönnyű és fájdalommentes ismerkedést kínál a keretrendszerrel, annak
főbb lehetőségeivel.
Szerzőt, szerkesztőt, lektort az a cél vezérelte, hogy a programozó
vagy programozópalánta anélkül ismerkedhessen meg a Qt-vel (vagy Qt-tal,
merthogy a Qt kiejtése körülbelül "kjút", azaz cuki, aranyos, édes), hogy
úgy istenigazából neki kéne állnia a tanulásnak. Nincs hát szó arról, hogy
az Olvasó referenciaművet böngészne éppen. Már csak azért sem, mert maga a
Qt óriási, és elég gyorsan változik ahhoz, hogy mire elkészülne egy igazán
átfogó és szakmailag korrekt mű, már lennének olyan pontok, ahol elavultnak
számítana.
Manapság jó sok szakkönyvön az olvasható, hogy mindenkinek csak a javára
szolgál, ha elolvassa. Itt is szerepelhetne az, hogy egyaránt hasznos a
telefonjával bajlódó kisiskolástól kezdve mindenkinek, akinek valami
elektromos kerül a kezébe, legyen az akár egy hajszárító. De azért
igyekszünk ennél korrektebbek lenni.
A könyv ideális olvasója az a programozni tanuló ember, aki túl van a
C++-szal való ismerkedés első élményein (vagy megrázkódtatásain - nézőpont
kérdése a dolog). Írt már pár túlterhelt függvényt, nem ijed meg, ha
karakterláncokat kell tömbben tárolnia és a tömböt rendeznie. Elkészült az
első néhány objektumával, és reggelire példányosít magának vajas kenyeret.
És, ami a C++-szal foglalkozók esetében elengedhetetlen: látott már
mutatót, érti a memóriaszivárgás fogalmát - de nem kell vérprofi
mutatózsonglőrnek lennie.
Mi az, amit még nem kell tudnia? Nem kell ismernie a C++ szabványos
könyvtárait, és nem kell tudnia eseményvezérelt programokat írnia. Az
egyikre azért nem lesz szüksége, mert úgy adódott, hogy a Qt eszközkészlete
pont elég lesz nekünk, a másikra meg azért nem, mert majd most úgyis
megtanulja. (Egyébként még egy csomó mindent nem kell tudnia, de nem
soroljuk fel mindet.)
Kívánjuk, hogy a következő oldalak szolgáljanak az Olvasónak épülésére,
egyben kikapcsolódásul.
Gárdony, 2013. augusztus-október
Varga Péter