• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jakie GUI cross-platform w C++ polecacie do aplikacji desktop? Qt, wxWidget,...czy coś innego?

Object Storage Arubacloud
0 głosów
193 wizyt
pytanie zadane 11 sierpnia 2023 w C i C++ przez reaktywny Nałogowiec (41,050 p.)
Jakie GUI C++ polecacie szczególnie? Musi być cross-platform i żeby za bardzo "nie odjeżdżało" od języka C++ ;) Qt jest dość ciekawe, ale ma trochę nieco dziwnych rzeczy i nie programuje się w nim jak w czystym C++ (własne klasy/typy - np. Qstring itd.). wxWidget nie znam, ale wiem, że też jest popularny.

Co polecacie? W czym Wam się najlepiej programuje/wało?

Dzięki!
2
komentarz 11 sierpnia 2023 przez j23 Mędrzec (194,920 p.)

(własne klasy/typy - np. Qstring itd.).

Trochę dziwny zarzut. Chyba wszystkie obiektowe biblioteki GUI implementują własne klasy np. stringów czy kontenerów. wxWidgets też je ma (wxString, wxVector, wxList, itd.).

wxWidgets nie potrzebuje metakompilatora, więc spełnia kryterium bycia bliżej standardowego C++. Ma parę archaizmów, ale całkiem wygodnie pisało mi się w nim.

 

komentarz 11 sierpnia 2023 przez reaktywny Nałogowiec (41,050 p.)
Nie wiedziałem, że inne frameworki też tak to rozwiązują. Istnienie typu QString skoro w języku C++ są również łańcuchy znaków wydawało mi się dziwne.
1
komentarz 11 sierpnia 2023 przez j23 Mędrzec (194,920 p.)

Na pierwszy rzut oka może się wydawać dziwne, ale jak zajrzysz do dokumentacji, to zobaczysz, że wcale takie dziwne to nie jest, bo te stringi robią więcej niż std::string. Przede wszystkim ogarniają kwestię konwersji ANSI -> UNICODE, ale też kodowania samego unikodu UTF-16 (Windows) -> UTF-8 (Linux). W zasadzie nie musisz się przejmować zbytnio kodowaniem podczas pisania aplikacji, bo te klasy załatwią tę kwestię automatycznie.

Jeśli mnie pamięć nie myli, wxString implementuje te same metody co std::[w]string, więc można go używać w ten sam sposób.

komentarz 11 sierpnia 2023 przez reaktywny Nałogowiec (41,050 p.)
Dzięki za przybliżenie spraw.
komentarz 12 sierpnia 2023 przez manjaro Nałogowiec (37,390 p.)

@j23,

Trochę dziwny zarzut. Chyba wszystkie obiektowe biblioteki GUI implementują własne klasy np. stringów czy kontenerów.

chyba tylko frameworki C++ tak mają

1
komentarz 12 sierpnia 2023 przez j23 Mędrzec (194,920 p.)
Bo C++ (jak i C) ma kiepską natywną obsługę unikodu.
1
komentarz 13 sierpnia 2023 przez tkz Nałogowiec (42,000 p.)
Kwestia wydania i pokrycia się z standardem. Qt jest z 95, vector od standardu 98. Abstrahując, że std::string to po prostu warstwa abstrakcji na char*.
1
komentarz 13 sierpnia 2023 przez tangarr Mędrzec (154,860 p.)
Dodatkowo (prawie) wszystkie klasy Qt używają mechanizmu copy-on-write. Przypisanie obiektu do innej zmiennej nie powoduje wykonania kopii. Kopia tworzona jest dopiero w momencie wykonywania zmian na obiekcie.

1 odpowiedź

0 głosów
odpowiedź 13 sierpnia 2023 przez reaktywny Nałogowiec (41,050 p.)
Na początek zabawy ściągnąłem Qt,  podobno najbardziej popularne jest. Mam wersję za free, tj. "Open Source" - dla własnych projektów, nawet z kodem zamkniętym, gdzie nie będę zarabiał, ani nawet rozpowszechniał, chyba będzie OK? ;)

Mam kilka pytań odnośnie Qt:

- Aplikacje desktopowe robiłem już kilka lat temu, ale są jeszcze mobilne i na TV (oraz embedded i dla motoryzacji). Jak wygląda ich buildowanie na PC? Rozumiem, ze tylko pod Androida mogę przygotować binarki pod Linuxem?

- Czy aplikacja desktopową można łatwo przenieść na urządzenia mobilne? Jak wiele zmian trzeba wprowadzić (zakładając, że nie będę korzystał z API telefonu, tj. np. GPS, WiFI czy foto-aparatu). Rozumiem, że trzeba zadbać o sprawy UI, jakiś sensowny layout wybrać.

- Czy jakieś firmy robią appki mobilne w Qt - na ile to jest popularne? (Czytałem, ze w branży moto Qt ma silną pozycję).
komentarz 13 sierpnia 2023 przez reaktywny Nałogowiec (41,050 p.)

Próbuję odpalić HelloWorld (kod od CLion-a) i dostaję:

qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: vnc, eglfs, offscreen, linuxfb, minimalegl, wayland, wayland-egl, minimal, xcb, vkkhrdisplay.


Process finished with exit code 134 (interrupted by signal 6: SIGABRT)

komentarz 13 sierpnia 2023 przez reaktywny Nałogowiec (41,050 p.)
Googiel poradził zainstalować co nieco:

sudo apt install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev

 

I wszystko ładnie działa!

Podobne pytania

0 głosów
1 odpowiedź 209 wizyt
0 głosów
1 odpowiedź 300 wizyt
0 głosów
1 odpowiedź 349 wizyt
pytanie zadane 5 czerwca 2019 w C i C++ przez fennec Nowicjusz (160 p.)

92,579 zapytań

141,432 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...