gtkmm

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
gtkmm
software
Siglă
Exemplu de fereastră
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

Software gratuit Free Software Portal : accesați intrările Wikipedia care se ocupă de software gratuit