Glade vs QT Designer
Ostatnimi czasy miałem okazję bliżej przyjrzeć się dwóch narzędziom do projektowania interfejsu. Postaram się w skrócie opisać, co mi się w nich podobało, a co nie.
Na początek Qt Designer, bo jego wcześniej się nauczyłem. Interfejs jest podobny do GIMP-a, czyli dużo niezadokowanych okienek: z kontrolkami, z właściwościami, ze slotami, z hierarchią kontrole i oczywiście okno naszego projektu. Glade natomiast to w całości jedno okno. Wiele osób narzeka na ten “gimpowy” interfejs, jednak w tym przypadku Qt Designer ładnej wygląda, chociaż może niestaranności wykonania Glade’a (głównie chodzi o okno z właściwościami, które, jak to trafnie pan w video tutorialu ujął, it’s never wide enough).
Wśród kontrolek Designera mamy pełen zasób biblioteki Qt (w tym np. kontrolka przeglądarki WWW opartej na WebKicie), jednak są to tylko stricte widżety. Nie będziemy mogli zdefiniować modelu dla *View (TreeView, ListView, etc.), a na tych kontrolkach miałem oparte oba interfejsy projektów (w sumie obie były pewnym interfejsem bazy danych). Glade potrafi tworzyć modele (o ile oczywiście wybierzemy projekt GtkBuilder, ale libglade nie jest już rozwijana, więc wybór tego pierwszego powinien być jasny), jednak chwilę musiałem pogooglać, jak to się robi. Jest to póki co mało intuicyjne (przynajmniej dla mnie). Natomiast w Designerze łatwiej udało mi się ustawić “sortowalność” kolumn (w sumie to w Glade jeszcze do tego nie doszedłem, choć próbowałem).
Ogólnie lepsze wrażenie sprawia jednak Designer. Jest bardziej intuicyjny, pozwala przenosić kontrolki myszką (nie trzeba ich wycinać albo zmieniać albo wpisywać pozycji we właściwościach) i edytować je na oknie. Od razu mamy także podgląd naszego okna. O wiele prościej się też moim zdaniem obsługuje kontenery, choć na początku miałem trochę trudności. W Glade trzeba trochę się namęczyć, żeby stworzyć pożądany efekt na okienku, żeby wszystko było równiutko.
To, co mi się jeszcze spodobało w Designerze, to sloty, chociaż to bardziej kwestia Qt niż samego Designera. Sloty bardzo ułatwiają podpinanie sygnałów. Możemy np. sygnał “clicked()” przycisku podpiąć pod slot “show()” okienka bez pisania żadnej procedury obsługi. Natomiast sygnały niestandardowe, które wymagają odrobiny naszego kodu, trzeba podpinać ręcznie (w kodzie). Glade potrafi zapamiętać nazwy naszych handlerów i automatycznie je podpiąć (w Pythonie trzeba jednak podać mu słownik odwzorowań nazw na funkcje jako argument).
Kiedy już stworzymy interfejs, nadchodzi etap programowania. Sama obsługa naszego interfejsu lepsza jest jednak w Glade. Tworzymy obiekt GtkBuilder i ładujemy nasz plik *.glade. Następnie wywołujemy funkcję, której podajemy nazwę widżetu, a ona zwraca nam wskaźnik (w Pythonie referencję) do niego i już możemy go używać. W Qt Designerze musimy odpowiednim narzędziem skonwertować nasz plik *.ui na kod źródłowy z klasą, od której nasze okno dziedziczy (lub enkapsuluje jej obiekt).
Co zatem jest lepsze? Oba programy są dobre. Na obu oparto potężne środowiska graficzne, zatem oba nadadzą się do stworzenia Twojego projektu. Każda ma swoje mocne i słabe strony, więc wybór w tym przypadku będzie indywidualny i często przypadkowy (tzw. kwestia gustu).
UPDATE: Glade jednak potrafi przenosić kontrolki, a Qt dynamicznie ładować interfejs.

Recent Comments