C++ GUI na rok 2020

C++ GUI na rok 2020
AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:3561
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


Bo C to najlepszy język, każdy uczeń ci to powie
Zobacz pozostałe 6 komentarzy
kq
Chyba nic łatwiejszego do GUI dla początkującego nie znajdziesz.
szybki_procesor
szybki_procesor
Może niepotrzebnie próbowałem od razu ogarnąć zaawansowane funkcje :P Według mnie boreland c++ builder był prostszy, tylko działał jedynie pod windowsem.
Sunnydev
@szybki_procesor: z Qt5 tak jest, ja miałem do niego ze 3 podejścia zanim zacząłem coś sensownego w nim robić. Dużo tutoriali na yt + example projects w dokumentacji i jakoś to leci. Koniec końców istnieje jeszcze forum Qt gdzie ludzie też dużo pomagają. Oczywiście na 4p też są programiści, którzy świetnie znają ten framework i nie odmawiają pomocy.
szybki_procesor
szybki_procesor
Poza tym zniechęciło mnie że, tam do wszystkiego są osobne biblioteki, nawet głupiego wypisywania tekstu na konsole.
kq
Możesz używać biblioteki standardowej żeby wypisywać na wyjście standardowe. Sam tak robię w wielu produkcyjnych programach.
several
  • Rejestracja:prawie 16 lat
  • Ostatnio:2 minuty
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.


edytowany 1x, ostatnio: several
BartoSAS
cons Qt: "uses ancient paradigms" - wiesz może o co mu chodzi?
CZ
imgui to raczej dodatek do sfml
several
Imgui to biblioteka, która ma bindingi do sfml, sdl, unity, qt, win32, photoshopa (!) i wielu innych https://github.com/ocornut/imgui/wiki/Bindings Ograniczanie swojej definicji do "dodatke do SFML" to zwykłe ignoranctwo.
szybki_procesor
szybki_procesor
  • Rejestracja:około 5 lat
  • Ostatnio:ponad 4 lata
  • Postów:25
1

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

edytowany 1x, ostatnio: szybki_procesor
MarekR22
sfml jest do tworzenia gier a nie UI aplikacji.
szybki_procesor
szybki_procesor
a to przepraszam najmocniej
several
  • Rejestracja:prawie 16 lat
  • Ostatnio:2 minuty
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.


edytowany 1x, ostatnio: several
Marvinn8686
plusowałbym ten post po wielokroć
BartoSAS
No jeszcze tylko czekam, aż będzie można visualowe projekty normalnie uruchomić w QtCreatorze :p
Sunnydev
a ja całkiem dużo właśnie obiektówki się nauczyłem dzięki Qt5. Łatwo się pisze interfejsy i klasy pochodne z wbudowanych klas :) idealne środowisko do praktycznej nauki solida czy innych mnemoników.
AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:3561
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


Bo C to najlepszy język, każdy uczeń ci to powie
AK
chciałeś powiedzieć, ze OK, żyje? czy coś innego?
MarekR22
Bardziej: nie jest martwy.
vpiotr
  • Rejestracja:ponad 13 lat
  • Ostatnio:prawie 3 lata
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)

AK
MFC ... coś tam się dzieje, odwzorowano komponenty/API Visty, XP, 8&10, przeżyło 64bit. Nadal utrzymuję w tym aplikację. Archaiczna jest główna architektura i tego nic nie zmieni. Oraz Windows ONLY, ONLY, ONLY
AK
Dawno nie romasnowałem z odnowionym do C++17 gtkmm, on chyba dawniej miał mapingi na makrach?
vpiotr
A nawet nie wiem. Znam tylko z wygladu GUI.
several
  • Rejestracja:prawie 16 lat
  • Ostatnio:2 minuty
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


edytowany 1x, ostatnio: several

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.