gtkmm
gtkmm software | |
---|---|
Exemplu de fereastră | |
Tip | Mediu de dezvoltare integrat |
Dezvoltator | Echipa de dezvoltare gtkmm |
Ultima versiune | 2:10:10 (1 mai 2007 ) |
Sistem de operare | Multiplatform |
Limba | C ++ |
Licență | LGPL ( licență gratuită ) |
Site-ul web | www.gtkmm.org/ |
gtkmm este interfața C ++ oficială a popularului set de instrumente grafic GTK + . Include returnarea apelurilor de tip sigur și un set complet de widget-uri ușor de extins datorită „ moștenirii . De asemenea, puteți scrie o interfață de program cu Glade , utilizând biblioteca libglademm .
gtkmm este un software gratuit , este distribuit sub licența GNU Lesser General Public License (LGPL).
În 2007 s-a decis că o aplicație pentru GNOME poate lua ca dependență de gtkmm. [1]
Limba
gtkmm folosește limbajul C ++ și spre deosebire de setul de instrumente GTK + scris în C , vă permite să scrieți obiecte orientate în mod nativ. Arhitectura este proiectată prin intermediul unor clase , fiecare widget este reprezentat de o clasă care derivă dintr-o clasă de mai sus. De exemplu, casetele de dialog (generice) sunt reprezentate de clasa Gtk :: Dialog care derivă din clasa Gtk :: Window (care la rândul său derivă din alte clase). Toate clasele derivă din genericul Gtk :: Widget care pune bazele construcției tuturor reprezentărilor grafice.
În plus, codul scris este portabil pentru orice platformă, fără ca aceasta să implice modificări substanțiale.
Gtkmm, spre deosebire de popularul set de instrumente Qt care folosește o versiune extinsă a limbajului C ++ (un fel de dialect), preferă un standard de utilizare a limbajului. De exemplu, există unele structuri care sunt inspirate din STL .
Avantajele în comparație cu GTK +
Avantajele în comparație cu setul de instrumente original trebuie atribuite inovațiilor C ++ comparativ cu C, de fapt, lucrând cu gtkmm puteți profita de caracteristicile majore ale limbajului. De exemplu, spațiul de nume , clasele menționate anterior, iteratorii , șabloanele și gestionarea excepțiilor .
Codul scris pentru gtkmm este mai expresiv și mai puțin complex decât codul pur pentru GTK +. Mai jos este un exemplu care servește la definirea textului inclus într-o etichetă. Primul este C, al doilea este C ++:
gtk_label_set_text (GTK_LABEL (etichetă), „hello world”); / * Stil GTK + * /
eticheta. set_text ( „bună lume”); / * stil gtkmm * /
Managementul evenimentelor
Presiunea evenimentelor (cum ar fi un clic pe un buton sau o tastă) este gestionată folosind apelul invers . gtkmm nativ nu se controlează, dar folosește biblioteca libsigc ++ .
Manipularea tipică a semnalului urmează acest model:
<Widget>. <Semnal>. conectare (IACS :: < tip funcție > (< funcție adresă >));
În principiu, există două tipuri de funcții: funcțiile membre ale unei clase (mem_fun) sau o funcție clasică (ptr_fun). De asemenea, este posibil să gestionați valoarea returnată a unei funcții, să îi transmiteți diverse argumente și să compuneți (folosind sigc :: compose) diferite funcții. Un exemplu real ar putea fi următorul:
buton. signal_clicked (). conectare (IACS :: mem_fun (* this, on_button_clicked & Window : :));
Funcția membru Window :: on_button_clicked () va fi invocată de fiecare dată când se apasă butonul „buton”. (Desigur, presupunem că butonul este instanțierea unui Gtk :: Button sau a unei clase derivate).
De asemenea, rețineți că dacă funcția este o metodă, trebuie să specificați obiectul la care să o aplicați.
Exemplu
Un exemplu mai detaliat este următorul, care va desena pe ecran o fereastră cu un buton în interior care scrie „Bună ziua, lume!” și de fiecare dată când este apăsat, același mesaj va fi tipărit pe terminal.
// Includem anteturile legate de widgeturile pe care trebuie să le folosim:
#include <gtkmm / button.h>
#include <gtkmm / window.h>
#include <gtkmm / main.h>
// Definim noua noastră clasă Window care derivă din cea implicită
clasa Window: public Gtk :: Window {
public:
Window ();
virtual ~ Window () {}
protejat:
gol virtual on_button_clicked (); // suna inapoi
Butonul Gtk :: Button ;
};
// Constructor de ferestre:
Window :: Window ()
{
SET_TITLE ( "Bună ziua!");
set_border_width (10); // marginea ferestrei
set_resizable (false);
buton. set_label ( "Bună ziua, lume!");
// Gestionăm semnalul legat de clicul pe „buton”:
buton. signal_clicked (). conectare (IACS :: mem_fun (* this, on_button_clicked & Window : :));
// Să adăugăm butonul la fereastră:
add (buton);
// Acum ne putem desena fereastra cu butonul din interior:
show_all ();
}
// Metoda care va răspunde la semnalul de clic. Imprimați pe terminalul "Hello, World!" și se duce în cap.
void Window :: on_button_clicked ()
{
g_print ( "Bună ziua, lume! \ n");
}
int main ( int argc , char * argv [])
{
// Să creăm un obiect Principal. Constructorul acestui obiect inițializează o sesiune gtkmm și verifică
// argumente transmise programului. Acest lucru este necesar în fiecare aplicație gtkmm
Gtk :: Trusa principală (argc, argv);
Win fereastră; // Instantați clasa noastră Window
trusa. alerga (câștigă); // Porniți bucla principală gtkmm. Se va termina când fereastra este închisă
}
Programul se compilează pe sisteme unix-like cu următoarea comandă:
c ++ `pkg-config --cflags --libs gtkmm-2.4 hello.cppas` -o hello
Dependențe
Pe lângă faptul că gtkmm depinde de GTK +, au nevoie de alte biblioteci de suport. De fapt, GTK + nu gestionează independent toate aspectele unei interfețe grafice. Mai jos sunt dependențele gtkmm și indică cele indirecte (adică bibliotecile care stau la baza diferitelor împachetări).
- sigc ++ - așa cum am văzut deja, biblioteca este cea care gestionează semnalele.
- gdkmm - bibliotecă care gestionează aspectele de nivel scăzut (împachetări pentru gdk )
- glibmm - Adaugă diverse funcții și caracteristici (cum ar fi suport pentru șiruri UTF-8 , fire, indicatori inteligenți etc.) (împachetare pentru GLib )
- pangomm - Se ocupă de formatarea șirurilor (wrapper pentru Pango )
- cairomm - Oferă o interfață de programare pentru grafică vectorială (wrapper pentru cairo )
- atkmm - Vă permite să implementați caracteristici utile de accesibilitate (wrapper pentru ATK )
De asemenea, este foarte util să instalați pkg-config , software care oferă o interfață unificată pentru a invoca bibliotecile corecte în finalizarea programului.
Alte biblioteci opționale:
- gnomemm
- glademm
Nume
Numele gtkmm provine din gtk minus minus. Conform canoanelor C ++, biblioteca ar fi trebuit să fie numită gtk ++, dar din moment ce există deja un „+” în numele setului de instrumente de bază, am preferat să folosim gtk--. Ulterior s-a decis schimbarea numelui gtkmm pentru a putea fi urmărit pe motoarele de căutare (de fapt, „-” va fi ignorat).
Unele programe bazate pe gtkmm
Notă
Elemente conexe
linkuri externe
- (RO) Site oficial pe gtkmm.org.
- Gtkmm pe packages.debian.org.
- Depozit de surse Gtkmm , pe gitlab.gnome.org.
- Widget Ierarhie pe gtkmm.org.
- (RO) Tutorial pe gtkmm.org.
- (RO) Liniile directoare pe gtkmm.org.
- Traducerea ghidului de referință [ Link rupt ] pe itagtkmm.blogspot.com.