Biblioteka wxWidgets - opinie

0

Hej! Ostatnio zacząłem się interesować biblioteką wxWidgets (potrzebna mi była jakaś biblioteka do tworzenia GUI w C/C++ dla Windows, kompilowana do EXE, statycznie).
Ktoś pracował, używał tej biblioteki?
W przeciwieństwie do QT jej zaletą jest, że jest "lekka" i nie trzeba dystrybuować z plikiem exe dodatkowych bibliotek DLL. Poza tym wxWidgets używa natywnych kontrolek (QT jedynie rysuje kontrolki wzorowane na natywnym interfejsie).
Jeśli chodzi o IDE to używałem wxDev-C++
Ktoś miał większe doświadczenie z tą biblioteką? Jak się ma sprawa z bazami danych w połączeniu z wxWidgets? Ogólnie praca z wxWidgets w środowisku wxDev-C++ wygląda jak połączenie starszych wersji C++ Buildera, Visual C++ i MFC... tak mi się to kojarzy ;)

Z góry dzięki za wszelkie info.

0

Generalnie wxWidgets nie jest zła, natomiast nie jest tak wygodna jak QT.
Jeśli chodzi o bazy danych to nie używałem z wxWidgets, natomiast OpenGL czy funkcje WinAPI bez problemów działają.
Zaletą jest to, że wszystko jest statycznie do exe kompilowane.
Posiada dużo wbudowanych kontrolek GUI (wiekszosc natywna).
Wada jest niezbyt dobra obsluga sieci (byc moze poprawione bedzie w nastepnych wersjach).
Jakas alternatywa do QT czy .NET albo JAVA - wxWidgets może być.
Moim zdaniem wxWidgets nie jest zbyt dobre do "oprogramowania biznesowego" - tutaj polecam Java+NetBeans lub C# .NET, natomiast to pisania programów narzędziowych, oprogramowania diagnostycznego (natywne kontrolki, dojscie do WinAPI jesli chodzi o Windows) to polecam.

0

wxWidgets ma lepsza licencje niz QT

0

wxWidgets działa z Pythonem, w związku z czym jak się nauczysz tej biblioteki możesz tworzyć aplikacje wxWidgets + Python + moduły C/C++.
Jako edytor form polecam wxFormBuilder - http://wxformbuilder.org/ (działa zarówno w C++ jak i z Pythonem)
Tutaj razem dodatkowymi kontrolkami: http://wxpack.sourceforge.net/

Też się nad tym zastanawiałem - Qt czy wxWidgets. Na razie najbardziej przekonującym argumentem dla mnie jest to że Qt sobie kontrolki rysuje, a wx używa systemowych - szybkość, stabilność, wrażenia estetyczne.

Co do baz danych to też jestem ciekaw jak to wygląda, bo nic interesującego w obu bibliotekach pod tym względem nie znalazłem.

Co do licencjonowania to obie biblioteki są dostępne pod licencją LGPL, z tym że wxWidgets przy dystrybucji binarnej (nie źródłowej) nie nakłada żadnych ograniczeń, więc wx jest lepsze dla oprogramowania komercyjnego.

http://www.wxwidgets.org/about/newlicen.htm

Gdybyś szukał kontrolek dla wx to koniecznie obejrzyj sobie dema:

0

ja działałem na Pythonie z tym, powiem Ci że lekko i przyjemnie się programuje, nie miałem żadnych błędów pod pythona z tą biblioteką [nie wiem jak c++]

0

Weź jeszcze pod uwagę dokumentację,która z bibliotek (wxWidgets vs Qt) ma ją lepiej pasującą do twoich wymagań.

vpiotr napisał(a)

Co do baz danych to też jestem ciekaw jak to wygląda, bo nic interesującego w obu bibliotekach pod tym względem nie znalazłem.

O Swarogu Wielki i Mocny,widzisz i nie grzmisz...
Czyli twierdzisz,że QSqlDatabase,QSqlQuery,QSql(Relational)TableModel i odpowiedni QDelegate do tego,QSqlRecord to nie jest nic ciekawego?Heh...

0

Tylko, że w QT na licencji LGPL to chyba, nie można kompilować statycznie... tzn. tak, żeby był jeden pliczek exe, bez konieczności rozprowadzania programu z bibliotekami dll QT.
W wxWidgets widziałem, że się generuje jeden plik exe (jego rozmiar nie jest aż tak bardzo duży, ale jeszcze można go zmniejszyć w ustawieniach konsolidatora + upx).

0

wxWidgets nie jest złe jeśli chcesz szybko napisać aplikację z graficznym interfejsem użytkownika czy np. jakiś program narzędziowy ale np. do aplikacji bazodanowych to polecam Jave albo C# :)

0
LOSMARCELOS napisał(a)

W wxWidgets widziałem, że się generuje jeden plik exe (jego rozmiar nie jest aż tak bardzo duży, ale jeszcze można go zmniejszyć w ustawieniach konsolidatora + upx).

Plik generuje się bardzo duży, a w najnowsxzych wersjach (nowszych niż ta z czasół wxDevC++, czyli około 8-9 lat) jeszcze większy, bo z tego co się orientowałem nawet w wersji release wrzucane jest coś w rodzaju debug info (trzeba to dopiero wyłączyć przed kompilacją biblioteki).
Poza tym, nieprawda że generuje się jeden plik .exe - generuje się tak, jak skompilujesz sobie bibliotekę (statycznie, dynamicznie - cały wxWidgets w jednym dll, dynamicznie - wxWIdgets rozdzielone na kilka .dll o mniejszych rozmiarach).

Poza tym, co rzuca się w oczy:

  • całkowita rezygnacja z używania wyjątków. Biblioteka nigdy nie rzuca żadnymi wyjątkami w przypadku błędu - zamiast tego są okna dialogowe z komunikatami (tylko po angielsku of course, o tym niżej).
  • sporo jest nawet fajnych gotowych okienek dialogowych do realizacji wielu zadań. Ale brak jakiejkolwiek obsługi języka innego niż angielski. Chcesz np. żeby gotowe okno podglądu wydruku miało napis "strona 5 z 100" na pasku stanu zamiast "Page 5 of 100", albo jakiś dialog typu podaj liczbę miał polski tekst? To sobie znajdź w kodzie biblioteki, popraw i przekompiluj bo jak nie to na sztywno wbity język angielski i już. Jak przekompilujesz to na sztywno będzie polski.
  • zagmatwana obsługa wielowątkowości. W qt wiele rzeczy robi się prościej, łatwiej i mniej kodu trzeba napisać

Ogólnie moje wrażenia są takie (jeśli chodzi o sam układ klas i pisanie w tym), że to coś trochę pośredniego pomiędzy MFC (na maksa poryte), a vcl (proste). Jak tak patrzę na niektóre rzeczy, to jakbym widział mfc, a na inne - vcl.

0

Rozmiar pliku nie jest aż tak duży jeśli wyłączyć się informacje o debugowaniu w opcjach projektu i zaznaczy opcje "strip executable".
Fakt, że biblioteka wygląda jak mieszanka VCL i MFC ale do pewnych zastosowań jest lepsza niż QT (jeśli potrzebujemy 1 plik exe - jako np. programik narzędziowy bez potrzeby instalacji itp.).

1 użytkowników online, w tym zalogowanych: 0, gości: 1