Strona 1 z 2
Komilacja programu - gtk+
: 23 lutego 2008, 14:04
autor: axlinux
Witam
Zabieram się właśnie za programowanie w GTK+. Tylko nie mam pojęcia co muszę mieć na swoim debianie zainstalowanego. Korzystam z Gnome więc pewnie gtk+ jest. Ale jakim poleceniem mogę skompilować program. ;]
Dziękuje z odpowiedzi ;]
: 23 lutego 2008, 16:36
autor: katnerster
Witam.
Musisz napisać w jakim języku chcesz programować. Pewnie będziesz musiał zainstalować podstawowe biblioteki GTK+ z dopiskiem -devel.
Pozdrawiam
: 23 lutego 2008, 17:08
autor: axlinux
Oczywiście w C++. :P
: 23 lutego 2008, 18:25
autor: katnerster
Ja niestety nie "bawiłem" się w C++.
Co do kompilacji to odsyłam do
Wikipedii.
Pozdrawiam.
: 23 lutego 2008, 19:24
autor: giaur
IMHO najlepiej bedzie zainstalowac jakies IDE, polecam Anjute+GLADE, gdzie utwrzysz gotowy projekt i zaprojektoujesz okienka.
A najprosciej, dlubiac calkowicie recznie zeby skompilowac i zlinkowac program piszesz cos takiego:
Kod: Zaznacz cały
gcc -Wall -g program.c -o program `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0`
A tak w ogole to zastanow sie czy chcesz dlubac w GTK i czy nie lepiej uzyc np wxWidgets (wxGTK konkretnie) albo gtkmm (strasznie toporne ale lepsze niz GTK)
: 23 lutego 2008, 21:32
autor: mlyczek
Ogólnie jest tak, że biblioteka do pisania w C nazywa się gtk, a jak się pisze w C++ to już gtkmm, które ma pełną obiektowość, a nie symulowaną GObject tak jak to jest w gtk dla C. Inna sprawa, że podstawowe gtk było napisane w C i dla tego języka przygotowane, jednak nazwy funkcji czasami są długie
Kod: Zaznacz cały
gtk_message_dialog_format_secondary_markup(GTK_MESSAGE_DIALOG(dialog), "[i]Nie można czytać z pliku z bazą danych![/i]");
co spowodowane jest dodawaniem na ich początku
gtk_<nazwa widgeta> a dopiero później sama funkcja. W gtkmm już tego nie ma, jest pełna obiektowość i normalnie odwołujemy się do metody danego obiektu przez ->
Co do potrzebnych paczek to do pisania w C potrzebne jest
libgtk2.0-dev, powinno pociągnąć zależności, a do C++
libgtkmm-2.4-dev
: 23 lutego 2008, 22:24
autor: giaur
Ogólnie jest tak, że biblioteka do pisania w C nazywa się gtk, a jak się pisze w C++ to już gtkmm
A kto mi zabroni pisac w C++ uzywajac gtk? Moge sam to opakowac w klasy jak zechce.
Co do gtkmm - nie trawie tego. Przez pol (!) godziny szukalem funkcji, ktora by zamykala okno. Czyli: klikne przycisk i zamyka sie okno. Myslalem, ze bedzie to cos w stylu Close, EndModal, Destroy - pomylilem sie, nazwa jakas fikusna (cos z hide from user czy jakos tak). Takich kwiatkow jest wiecej.
Nastepna rzecz na ktorej wymieklem - chcialem umiescic widzeta na obrazku i za cholere mi to sie nie udalo. O ile samo gtk moze byc toporne, bo to tylko C w koncu, to od biblioteki obiektowej wymagam zeby cokolwiek ułatwiała.
Dobrze ze jest jeszcze wxWidgets, bo jest przynajmniej po ludzku zrobione - kazdy kto sprobuje i porowna zgodzi sie ze mna. Trzeba chyba naprawde miec duzo samozaparcie zeby pisac programy w gtkmm.
: 23 lutego 2008, 22:52
autor: mlyczek
giaur pisze:A kto mi zabroni pisac w C++ uzywajac gtk? Moge sam to opakowac w klasy jak zechce.
Nikt Ci nie zabroni, jasne, że możesz tak zrobić, jak ze wszystkim co jest napisane w C.
giaur pisze:Co do gtkmm - nie trawie tego. Przez pol (!) godziny szukalem funkcji, ktora by zamykala okno. Czyli: klikne przycisk i zamyka sie okno. Myslalem, ze bedzie to cos w stylu Close, EndModal, Destroy - pomylilem sie, nazwa jakas fikusna (cos z hide from user czy jakos tak). Takich kwiatkow jest wiecej.
gtkmm jest właśnie takim opakowaniem w klasy, ale przez kogoś zrobione. O wygodzie pisania w tym nie mogę sie wypowiedzieć, bo nigdy tego nie próbowałem. Możliwe, że jest to dosyć uciążliwe. Co do zamykania okna po naciśnięciu przycisku to w C też miałem z tym problem. Najprostsze rozumowanie wygląda tak, żeby po naciśnięciu przycisku wyemitować sygnał "delete_event" dla okna i powinno być ok, ale pojawiały się różne problemy, ale to dyskusja na osobny temat.
: 24 lutego 2008, 00:55
autor: giaur
W GTK i C najprostsza metoda na zamkniecie okna to uzycie gtk_widget_destroy na utworzonym oknie, tak robilem zamykanie dialogów.
W ogole cale to gtk i gtkmm ma jak dla mnie porąbaną składnię i logikę, QT jest juz sporo lepsze no i wspomniane wxWidgets, ktore tez jest swoistym opakowaniem Gtk (wxGTK) lub nawet nie wymaga GTK. Ale faktyczmoe temat zbyt obszerny aby tu o tym pisac.
: 24 lutego 2008, 18:30
autor: mlyczek
giaur pisze:W GTK i C najprostsza metoda na zamkniecie okna to uzycie gtk_widget_destroy na utworzonym oknie, tak robilem zamykanie dialogów.
Przy zamykaniu dialogów tak (tak jest nawet w manualu napisane), ale przy zamykaniu głównego okna z wnetrza jakieś funkcji, albo przy pomocy dodatkowego przycisku to juz jest nie ładna metoda.
axlinux nie napisał nam jeszcze czy udało mu się coś skompilować.