gtkmm
C++ interfészek a GTK-hoz és a GNOME-hoz
C++ interfészek a GTK-hoz és a GNOME-hoz
1. A gtkmm helye a világban |
|
|
Mi a GTK? |
|
|
A GTK egy C nyelven írt grafikus felhasználói felületi elem eszközkészlet, amely a GNOME-projekt, valamint számos önálló alkalmazás alapját képezi. A GTK az az alap, amelyre a gtkmm épült. Nézze meg a https://www.gtk.org oldalt. |
|
|
Miért kapta a gtkmm nevet? |
|
|
A gtkmm eredetileg gtk-- néven volt ismert, mivel a GTK eredetileg GTK+ néven szerepelt, és a nevében egy + volt. Mivel azonban a -- karaktereket a keresőmotorok nem könnyen indexelik, a csomagot általában gtkmm néven emlegették, és mi is ezt a nevet tartottuk meg. |
|
|
Miért érdemes a gtkmm használata a GTK helyett? |
|
|
|
|
Miért érdemes a libsigc++ használata? Miért ne használja a GTK szignálfüggvényeit? |
|
|
|
|
Maga a GTK/GNOME miért nem C++ nyelven lett írva? |
|
|
|
|
Miért nem használ Qt keretrendszert, ha ennyire szereti a C++ nyelvet? |
|
|
A gtkmm-fejlesztők általában a gtkmm-et részesítik előnyben a Qt-vel szemben, mert a gtkmm inkább a C++ stílusában működik. A Qt abból az időből származik, amikor a C++ és a szabványos programkönyvtár még nem volt szabványosítva, vagy a fordítók nem támogatták megfelelően. Ezért sok olyan dolgot kettőz, ami ma már a szabványos programkönyvtárban található, mint például a konténerek és a típusinformációk. A legfontosabb, hogy módosították a C++ nyelvet a szignálok biztosítása érdekében, így a Qt-osztályok nem használhatók egyszerűen nem Qt-osztályokkal együtt. A gtkmm képes volt a szabványos C++ nyelvet használni a szignálok biztosításához, anélkül hogy megváltoztatta volna a C++ nyelvet. Emellett a gtkmm és a többi *mm modul lehetővé teszi olyan szoftverek összeállítását, amelyek szorosabban együttműködnek a GNOME asztali környezettel. |
|
2. Mennyire jó a gtkmm? |
|
|
Milyen rendszereken fut? |
|
|
A gtkmm bármely UNIX-típusú rendszeren futtatható, amelyen a megfelelő fordítók és programkönyvtárak telepítve vannak. A GNU C++ fordító (g++, a gcc része) a GNU eszközkészletével (amely például Linux- és *BSD-rendszereken megtalálható) együtt alkotja az alapértelmezett összeállítási környezetét. Windows rendszeren is összeállítható és használható a mingw összeállítási eszközökkel vagy az MSVC-vel. |
|
|
Mennyire teljes? |
|
|
A gtkmm arra törekszik, hogy a GTK által kínált összes funkciót biztosítsa. Ez azt jelenti, hogy képesnek kell lennie arra, hogy a gtkmm segítségével bármit megtehessen, amit a GTK támogat, és ezt még könnyebben is megtehesse. Ha valami kimaradt, akkor szeretnénk, ha jelezné nekünk. A GLib olyan osztályokat tartalmaz, amelyek funkciói hasonlóak a szabványos C++ osztályokéhoz, például a |
|
|
A gtkmm használ olyan szabványos C++ konténereket, mint például az |
|
|
Igen, hiszünk a szabványos C++ kód újrahasználatában, ahol csak lehetséges. Ez elsőre talán nem nyilvánvaló, mivel a gtkmm rendelkezik egy |
|
|
Hogyan viszonyul a gtkmm a Qt-hez? |
|
|
|
3. További információk |
|
|
Hol lehet a gtkmm-t megvitatni? |
|
|
Nézze meg a beszélgetés oldalt. |
|
|
Milyen dokumentáció létezik a gtkmm-hez? |
|
|
Nézze meg a dokumentációs oldalt. |
|
|
Hol találhatok néhány példakódot? |
|
|
Nézze meg a példák könyvtárát a gtkmm-documentation modulban. Ezek többsége szerepel a gtkmm könyvben. |
|
4. A gtkmm használata |
|
|
Milyen fordítóargumentumokat kell használnom egy gtkmm-program lefordításához? |
|
|
Nézze meg a hivatkozási dokumentációt. |
|
|
Hogyan kérhetem le a GTK-objektumot egy gtkmm-objektumból? |
|
|
Ha olyan GTK-funkciókra van szüksége, amelyek nem támogatottak a gtkmm-en keresztül, akkor a megfelelő osztályban meghívhatja a |
|
|
Hogyan csomagolhatok be egy GTK felületi elemet egy gtkmm-példányba? |
|
|
A |
|
|
Használhatok C++ kivételeket a gtkmm-mel? |
|
|
Igen, de vannak korlátozások. Mivel az egyszerű C nem ismeri a C++ kivételeket, a gtkmm-kódban addig használhat kivételeket, amíg nincsenek C-függvények a hívási veremben a kivételt dobó és az elkapó között. Ez azt jelenti, hogy a kivételt helyileg kell elkapnia. Figyelmeztetést fog kapni futásidőben a nem elkapott kivételekről, és megadhat egy másik kezelőt a nem elkapott kivételekhez. Néhány gtkmm-metódus kivételeket használ a hibák jelentéséhez. A dobható kivételtípusok ezen metódusok hivatkozási dokumentációjában vannak felsorolva. |
|
|
Hogyan használható a Cambalache vagy a Glade a gtkmm-mel? |
|
|
Nézze meg a Gtk::Builder fejezetet a gtkmm könyvben. A Cambalache helyettesíti a Glade alkalmazást. A Glade és a GTK4/gtkmm4 nem használható együtt. |
|
|
Mit csinál a |
|
|
Ez azt jelenti, hogy „a konténer felületi elem törölni fogja ezt a gyermek felületi elemet”. Akkor használja, ha nem szeretne aggódni amiatt, hogy mikor kell törölni a dinamikusan lefoglalt felületi elemeket. |
|
|
Hogyan tudhatok meg többet a felületi elemek elrendezéséről? Nem értem teljesen a csomagolási beállításokat. |
|
|
A Cambalache remek módja annak, hogy lássa, mit lehet csinálni a GTK és a GNOME felületi elemeivel. Használja a Cambalache tervezőalkalmazást a felületi elemek választékának felfedezéséhez, és hogy megnézze, hogyan lehet összeállítani azokat. |
|
|
Az MFC-hez (Microsoft Foundation Class programkönyvtárhoz) vagyok szokva. Hol van a dokumentum és a nézet? |
|
|
Dokumentum/nézet (amely a modell-nézet-vezérlő, rövidítve MVC szoftvertervezési minta egyik változata) közvetlenül nincs támogatva a GTK által. Azonban a |
|
|
Hogyan töltsek be képeket a gtkmm-mel való használathoz? |
|
|
Használja a |
|
|
A gtkmm szálbiztos? |
|
|
Sem a GTK, sem a gtkmm nem szálbiztos. Az összes grafikus felhasználói felületi kódnak ugyanabban a szálban kell futnia. Ha a programjának előnyös lehet a több szál használata, akkor tekintse meg a többszálas programok fejezetet a gtkmm könyvben. |
|