Kurs GTK+ – rozdział 3
Ostrzeżenie
Ten post został opublikowany 13 lat temu. Informacje mogą być przestarzałe, poglądy autora mogły ewoluować lub post może być nieaktualny w jakiś inny sposób. Weź to pod uwagę podczas czytania tego posta.3. Widżety
3.1. Wstawienie przycisku
W tym rozdziale dowiesz się, jak wstawić przycisk do naszego pustego okna. Aby jednak to zrobić, potrzebujemy kontenera, w którym będziemy mogli go umieścić. Użyjemy kontenera, który się nazywa fixed. Jego główną cechą jest to, że widżety umieszcza się w nim, podając położenie oraz rozmiar w pikselach. Poniżej znajduje się kod źródłowy z drugiego rozdziału:
int
Po:
GtkWidget *okno;
umieścimy definicje zmiennych, które przechowają nam kontener oraz przycisk. Tak więc dopisujemy pod spodem:
GtkWidget *kontener;
GtkWidget *przycisk;
No — ale jak widać, są to tylko wskaźniki, więc nasz kontener i przycisk przydało by się jakoś utworzyć. W tym celu pod linijką
okno = ;
dopisz:
kontener = ;
;
przycisk = ;
;
;
Już wszystko tłumaczę:
Pierwsza linijka odpowiada za utworzenie kontenera fixed. Następna umieszcza go w oknie programu. Trzecia tworzy nowy przycisk z etykietą “Twój pierwszy przycisk”. Następna ustala rozmiar przycisku (80x35 pikseli) i ostatnia umieszcza go w kontenerze 50 pikseli od lewej krawędzi kontenera i 20 od górnej.
Żeby ujrzeć nasz przycisk, należy jeszcze zamienić linijkę
;
na:
;
Aby wyświetlić wszystkie widżety, a nie tylko okno programu.
Całość wygląda następująco:
int
Po skompilowaniu programu powinieneś ujrzeć coś takiego:
3.2. Właściwości okna programu
Uruchamiając swój program, z pewnością zauważyłeś, że rozmiar okna się zmienił. Z 400x400 px zmniejszył się do rozmiarów kontenera. Na szczęście da się to zmienić.
void ;
Powyższa funkcja pozwala zmienić domyślny rozmiar okna. Pierwszym argumentem jest referencja do okna, drugim żądana szerokość, oraz ostatnim wysokość. Zapewne zauważyłeś, że wysokość i szerokość nie jest zmienną typu int
, tylko gint
. GTK+ korzysta bowiem z własnych typów zmiennych, aby ułatwić portowanie biblioteki na inne języki programowania niż C i C++. Typami zmiennych w GTK+ nie będziemy się jednak w tym rozdziale zajmować, ponieważ są one identyczne jak znane Ci już typy języka C, jak na przykład int
, bool
, czy float
.
Powyższą funkcję warto więc wstawić do kodu naszego programu. W tym celu pod:
okno = ;
wstaw:
;
Po skompilowaniu i uruchomieniu programu powinno być już o wiele lepiej. Jak zapewne zauważyłeś, wykonaliśmy konwersję GtkWidget
na GtkWindow
. Jest to wymagane, ponieważ nasze okno ma typ GtkWidget
, a funkcja gtk_window_set_default_size()
przyjmuje wskaźnik do okna typu GtkWindow
.
Warto również sprawić, aby po uruchomieniu okno znajdowało się pośrodku ekranu. W tym celu, pod funkcją gtk_window_set_default_size()
wstaw następującą linijkę:
;
Oczywiście nie chcesz, aby Twoje okno miało tytuł “kurs_gtkplus”, “main”, czy podobną. To też się da zmienić. Służy do tego funkcja:
void ;
Jako pierwszy argument przyjmuje ona referencję do okna, a jako drugi — żądany tytuł. Aby więc nasze okno miało tytuł “Nasz program”, pod wywołaniem poprzednio opisywanej funkcji, wstaw:
;
Po skompilowaniu i uruchomieniu programu okno naszego programu powinno wyglądać następująco:
To by było na tyle w tym rozdziale. W następnym powiem nieco o zdarzeniach w GTK+.