• 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?

Hosting forpsi easy 1 pln
0 głosów
173 wizyt
pytanie zadane 11 sierpnia w C i C++ przez reaktywny Nałogowiec (38,220 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 przez j23 Mędrzec (194,340 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 przez reaktywny Nałogowiec (38,220 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 przez j23 Mędrzec (194,340 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 przez reaktywny Nałogowiec (38,220 p.)
Dzięki za przybliżenie spraw.
komentarz 12 sierpnia 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 przez j23 Mędrzec (194,340 p.)
Bo C++ (jak i C) ma kiepską natywną obsługę unikodu.
1
komentarz 13 sierpnia 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 przez tangarr Mędrzec (154,200 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 przez reaktywny Nałogowiec (38,220 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 przez reaktywny Nałogowiec (38,220 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 przez reaktywny Nałogowiec (38,220 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ź 187 wizyt
0 głosów
1 odpowiedź 284 wizyt
0 głosów
1 odpowiedź 295 wizyt
pytanie zadane 5 czerwca 2019 w C i C++ przez fennec Nowicjusz (160 p.)

92,080 zapytań

140,736 odpowiedzi

317,696 komentarzy

61,401 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia w koszyku, uzyskując rabat aż -50% (w dniach 24.11 - 29.11 z okazji Black Friday, a potem będzie to -30%) na bilety w wersji "Standard"! Więcej informacji na temat akademii znajdziecie tutaj. Dziękujemy Sekurakowi za tak fajną zniżkę dla 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 15% 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!

...