gtkmm
C++-gränssnitt för GTK och GNOME
C++-gränssnitt för GTK och GNOME
1. gtkmm:s plats i världen |
|
Vad är GTK? |
|
GTK är GUI-komponentverktygslådan, skriven i C, vilken tjänar som grunden för GNOME-projektet såväl som för många fristående program. GTK är grunden på vilken gtkmm är byggt. Se https://www.gtk.org. |
|
Varför heter det gtkmm? |
|
gtkmm kallades ursprungligen gtk-- eftersom GTK i början hette GTK+ och hade ett + i namnet. Men eftersom -- inte lätt kan indexeras av sökmotorer så gick paketet allmänt under namnet gtkmm vilket vi sedan höll oss till. |
|
Varför använda gtkmm i stället för GTK? |
|
|
|
Varför använda libsigc++? Varför inte använda GTK:s signalfunktioner? |
|
|
|
Varför är inte GTK/GNOME självt skrivet i C++? |
|
|
|
Varför inte använda Qt om ni gillar C++ så mycket? |
|
gtkmm-utvecklare tenderar att föredra gtkmm över Qt för att gtkmm gör saker på ett mer C++-aktigt sätt. Qt härstammar från en tid då C++ och standardbiblioteket varken standardiserats eller hade ordentligt stöd av kompilatorer. Det duplicerar därför mycket saker som nu är i standardbiblioteket, som behållare och typinformation. I synnerhet modifierade de C++-språket så det tillhandahöll signaler, så Qt-klasser kan inte lätt användas med klasser som inte är Qt. gtkmm kunde använda standard-C++ för att tillhandahålla signaler utan att ändra C++-språket. gtkmm och de andra *mm-modulerna låter dig även bygga programvara som arbetar närmare med GNOME-skrivbordet. |
|
2. Hur bra är gtkmm? |
|
Vilka system kör det under? |
|
gtkmm bör kunna köra under alla system av UNIX-typ med rätt kompilatorer och bibliotek installerade. GNU:s C++-kompilator (g++, del av gcc) tillsammans med GNU-verktygslådan (som den hittas på Linux- och *BSD-system) utgör dess standardbyggmiljö. Det kan också köras och användas på Windows med mingw-byggverktygen eller MSVC. |
|
Hur komplett är det? |
|
gtkmm försöker erbjuda all funktionalitet som erbjuds av GTK. Detta betyder att du ska kunna göra allt med gtkmm som stöds av GTK, och göra det enklare. Om det är något som inte täcks så vill vi veta detta. GLib innehåller klasser med liknande funktionalitet som C++-standardklasser, exempelvis |
|
Använder gtkmm C++-standardbehållare som |
|
Ja, vi tror på att återanvända C++-standardkod närhelst möjligt. Detta kanske inte är uppenbart först eftersom gtkmm har |
|
Hur är gtkmm jämfört med Qt? |
|
|
|
3. Ytterligare information |
|
Var kan gtkmm diskuteras? |
|
Se sidan diskussion. |
|
Vilken dokumentation finns för gtkmm? |
|
Se sidan dokumentation. |
|
Var kan jag hitta exempelkod? |
|
Se exempelkatalogen i modulen gtkmm-documentation. De flesta av dessa finns i gtkmm-boken. |
|
4. Använda gtkmm |
|
Vilka kompilatorargument ska jag använda för att kompilera ett gtkmm-program? |
|
Hur kan jag få GTK-objektet från ett gtkmm-objekt? |
|
Om du behöver någon GTK-funktionalitet som inte stöds genom gtkmm så kan du anropa metoden |
|
Hur kan jag göra ett omslag till en GTK-komponent i en gtkmm-instans? |
|
|
|
Kan jag använda C++-undantag med gtkmm? |
|
Ja, men det finns begränsningar. Eftersom vanligt C inte vet vad ett C++-undantag är så kan du använda undantag i din gtkmm-kod så länge som det inte finns några C-funktioner i din anropsstack mellan kastare och fångare. Detta betyder att du måste fånga ditt undantag lokalt. Du kommer varnas vid körning om ofångade undantag, och du kan ange en annan hanterare för ofångade undantag. Vissa gtkmm-metoder använder undantag för att rapportera fel. Undantagstyperna som kan kastas listas i referensdokumentationen för dessa metoder. |
|
Kan jag använda Cambalache eller Glade med gtkmm? |
|
Se kapitlet Gtk::Builder i gtkmm-boken. Cambalache ersätter programmet Glade. Glade kan inte användas med GTK4/gtkmm4. |
|
Vad gör |
|
Detta betyder att ”Behållarkomponenten kommer ta bort denna barnkomponent.” Använd det om du inte vill oroa dig om när du ska ta bort dynamiskt allokerade komponenter. |
|
Hur kan jag lära mig arrangera komponenter? Jag blir förvirrad av packningsalternativen. |
|
Cambalache är ett utmärkt sätt att se vad som kan göras med GTK- och GNOME-komponenter. Använd Cambalache för att utforska komponentvalen och för att se hur de kan sättas ihop. |
|
Jag är van vid MFC (Microsoft Foundation Class Library). Var är Document och View? |
|
Document/View (som är en version av programdesignmönstret Model–View–Controller (MVC)) stöds inte direkt av GTK. Klasserna |
|
Hur läser jag in bilder för användning med gtkmm? |
|
Använd |
|
Är gtkmm trådsäkert? |
|
Varken GTK eller gtkmm är trådsäkra. All GUI-kod måste köras i samma tråd. Om ditt program skulle kunna dra nytta av att använda flera trådar, se kapitlet flertrådade program i gtkmm-boken. |