C++ GUI na rok 2020

0

Jakim środowiskiem GUI C++ warto się zainteresować w r 2020 ?
Przeszedłem w życiu Buildera, nadal (o zgrozo) utrzymuję aplikację biznesową w MFC (więc mam z tym kontakt), z wieloma frameworkami z przeszłości (Wx, FLTK, GTK++, WTL) odbyłem zapoznawcze sesje.

Przeznaczenie:
wykonywanie małych zwinnych gówienek, typu program w Systrayu na 2-3 małe formatki. O dużych aplikacjach nawet nie myślę, jak coś, to robię w C#.
WTL mi w tym segmencie wychodziło fajnie, ale chyba jest martwe.

Mocne preferencje:
linkowanie statyczne (więc nie Qt)
użycie biblioteki std:: a nie potworków

7

TUTAJ masz najlepsze zestawienie bibliotek UI do c++ jakie swego czasu udało mi się znaleźć. Moim zdaniem Qt mimo swoich wad jest zdecydowanie nr.1 w światku C++. A jeśli nie boisz się eksperymentów, to może spróbuj Dear Imgui. Zdrowy projekt, aczkolwiek został stworzony głównie z myślą o tworzeniu narzędzi do gier.

1

Bawiłem się sfml i całkiem mi podchodził

4

@BartoSAS: Wyjmę z komentarza dla lepszej widoczności, ponieważ ostatni raz coś pół poważnego robiłem w Qt wersji 4.6 i wolałbym, żeby ktoś zweryfikował, albo odniósł się do tego, co napiszę.

cons Qt: "uses ancient paradigms" - wiesz może o co mu chodzi?

Nie wiem, choć się domyślam. Pisząć w Qt ma się wrażenie, jakby autorzy bardzo chcieli sprawić, by programista czuł się jakby programował w javie. Wielgachne klasy z dwucyfrową liczbą metod, wszystkie niemal klasy będące któryś tam listkiem w drzewku dziedziczenia i wszystkie ze wspólnym przodkiem - QObject, klasy typu QAbstract* żadnych namespace'ów (EDIT: Qt5 jakieś się pojawiły), zautomatyzowanie zwalniania pamięci poprzez relację rodzic - dziecko obiektów pochodzących od QObject i przez to rzucające się wszędzie w oczy surowe wskaźniki. Nawet konwencja nazewnictwa jest javowa.

No i jest to trochę nie ce plus plusowe podejście obecnie, silnie obiektowe wzorce i wielkie klasy to nie droga do wydajnego korzystania z tego języka. Podejście Qt jest jeszcze całkiem naturalne jeśli zamkniemy się tylko w obrębie gui (guziki, layouty, dialogi itp.), ale był czas, że każdy feature miał być zamknięty w jednej wielkiej klasie (np. nieobecne już QHttp). Dzisiaj programiści C++ skupiają się raczej by ich kod był bliżej danych na których operują, bez żadnych fikuśnych abstrakcji. Stąd wzrost popularności bibliotek gui typu immediate mode jak dear imgui albo nuklear.

Czy to powód, żeby odrzucać Qt? Oczywiście że nie. Można psioczyć, że kobyła, że wielkie dllki, ale prawda jest taka, że Qt nie ma konkurencji jeśli chodzi o feature'y, wsparcie czy społeczność. Ma też tą, przyjemną cechę, że mimo swojego romiaru próg wejścia jest niski - możesz nie wiedzieć za co odpowiedzialne jest 3/4 frameworka a i tak zrobisz swoje własne gui ;)

No i razem z Qt dostaliśmy QtCreatora, bardzo niedocenianie IDE, które poleciłbym nawet w projektach, gdzie nie używa się Qt.

0

Co powiecie na FLTK w roku 2020 , do małych utility?

  • Wydaje się, nie jest martwy.
  • C++ za nim stojące jest mało ambitne, co ma zalety, bo nie wynajduje koła, i jest bardziej otwarte na kontenery std::, boost itd

Ujmijmy tak: mam popsuty capslock ;) i mappingi wielkimi literami (makrami) mi się wymiotują po "kilku" latach z MFC.
Z "maleństw" to FLTK tego negatywnego ficzeru nie ma

3

FLTK chyba bardzo odstaje od reszty.
Trochę lepiej wygląda gtkmm / GLADE.
https://developer.gnome.org/gtkmm-tutorial/unstable/gtkmm-tutorial.html

Pod względem wyglądu (najlepsze na górze) posortowałbym tak:

  • C++ Builder
  • Qt
  • MFC (o ile to jeszcze jest rozwijane?)
  • wxWidgets
  • GTK
  • FLTK

(to te co widziałem)

2
  • MFC (o ile to jeszcze jest rozwijane?)

@vpiotr Przez MS raczej nie, ale są za to firmy trzecie z ciekawymi ofertami (sam nie korzystałem) np https://codejock.com/ Problemem MFC nie jest wygląd a sama główna architektura, tak jak napisał @AnyKtokolwiek. Główna architektura czyli makrologia i switch case'y wszędzie https://www.tutorialspoint.com/mfc/mfc_messages_events.htm

@AnyKtokolwiek
FLTK chyba zostało stworzone do małych utility. Jest brzydkie, ale jeśli jest potrzeba to da się zrobić żeby nie raniło oczu, przykład http://prodatum.sourceforge.net/ Nie używałem zbyt dużo, ale mi najbardziej spodobało się to, że po skompilowaniu na linuksie statyczna libka zajmowała kilka MB i ma nawet swój prosty WYSIWIG pod tutyłem FLUID. Z małych rzeczy na 2020 mógłbym podpowiedzieć sciter. Skompilowana natywna dllka też zajmuje klika MB, ale musiałbyś się przekonać do tworzenia webowego UI.

Prodatum FLTK screenshot.
screenshot-20201208154407.png

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