Používání Qt pro UI datovky je podle mně její jediná slabina: nevypadá a neovládá jako nativní aplikace platforem na kterých běží …
A jak by měli udělat GUI aby bylo multiplatformní a zároveň nebylo nutné udržovat N různých verzí pro různé platformy? Jsem si jistý, že vývojáři rádi ocení dobrou radu.
Neměli ho dělat multipatformní. UI Datovky je přímočaré a udělat ho nativní by nebyl žádný velký overhead. Obecně se úspory z použití multiplatformních frameworků dost přeceňují.
Já to NIC u Datovky vlastně moc nevyčítám, je to příklad aplikace kterou nejde monetizovat, a uživatel není zákazník a buď bere nebo nechá být, a ta aplikace nakonec dělá to co je třeba.
Jenže on není problém to jednou napsat, ale udržovat do budoucna. Jednou za čas se pak skoro každá knihovna změní a musíte to upravit. Potřebuješ teda minimálně 3 UI vývojáře pro desktop Qt, Android a iOS. Moc lidí co zvládá všechny tři platformy není a když je tak to pytlíkujou.
Je otázka jestli cílem je co nejvíc ušetřit a nebo mít kvalitní aplikaci.
U Datovky si dovedu představit důvody proč je to tak jak to je, a NIC to nezazlívám. Realistickou alternativou by pravděpodobně byla žádná Datovka. A ta co je dělá co má když si člověk zvykne na podivné UI a ovládání.
Nicméně obecně je to často, a zaznívá tady v diskusi taky, z nezkušenosti vzniklé over-engineered řešení. Psát podobnou aplikaci v custom C++ frameworku je totální overkill. Datovka není žádná rocket science, její UI se dá sestavit ze základní sady systémových UI prvků každé platformy a podobně vnitřnosti (local storage etc).
Pokud máte dobrý návrh - specifickaci - aplikace a je za tím dobrý product owner a maintenance strategie a architekt, tak je nakonec - právě včetně maintenance - tyhle věci často lacinější a udržovatelnější udělat pro každou platformu zvlášť než se pokoušet ušetřit tím že to budu mít na různých platformách - stejně. Zvlášť pokud serverové API je dané externě. Na iOS i Android najdete medior kontraktora myslím snáz než na multiplatformní Qt.
tak po tom redesignu pred rokem mi divna (pouzivam na Androidu) uz neprijde a ovladani uz vubec ne:
- side-menu reaguje na tlacitko "menu" i swipe z leve hrany lcd
- prepinani mezi prijate/odeslane je swipe vlevo/vpravo
- u zpravy jsou ikony umistene dole takze lze ovladat jednou rukou
- aktualizovat seznam zpravu je pres klasicke pull-down
- nova zprava je pres ikonu umisteno bezne vpravo-dole
- v detailu zpravy jsou pod textem prilohy
- v seznamu zprav, hold zobrazi popup menu s oznacit jako prectene/neprectene ci smazat (ano tady oproti beznosti schazi swipe zpravy vlevo/vpravo pro tyto ukony)
jinak na Desktopu pouziva GTk Xfce a prevazne GTk aplikace, az na par Qt vyjimek ktere mam naskinovane na gtk2 pouzivajici me hlavni GTk2/GTK3/Xfce tema... ale u te Datovky v Androidu ani nepoznam ze jde o Qt, vypada vicemene normalne, samozrjeme neni to primo design ala systemove aplikace v Material You, ale to treba i GooglPlay ktere je primo od Google trapne ignoruje systemovou uzivatelem nastavenou Material You barvy Accentu a cpe tam tu svoji hnusnou modrou (jo Datovku pouzivam v dark-mode, kde hnusna modra neni :)
Jo, na Androidu není žádné systémové téma. Např. nové verze Material You jsou mimo telefony Pixel o štěstí, jestli budou fungovat, např.:
https://www.reddit.com/r/oneui/comments/186kk9y/material_you_theming_broken_in_most_google_apps/
tak me na Fairphone5@Android14 funguje v google aplikacich accent barva skoro vsude: Dokumenty, Disk, Files, Ukoly, Hodiny (az na modre Start/Pauza tlacitka u Casovace), Kalendar, Kalkulacka, Keep, Kontakty, Nastaveni, Penezenka, Prekladac, Presentace, Tabulky, Zpravy
Do hnusno-modra mam: Lens, Mapy a ten PlayObchod
Od toho jsou tady ruzne multiplatformni frameworky, spousta aplikaci je vyvijenych multiplatformne a nevypadaj jako dilo 10tileteho kluciny… pokud si v cznicu neumi udelat pruzkum a vyjde jim ze qt je nejlepsi framework pro UI mobilni aplikace tak mi je jich docela lito.
Treba to byl jediny framework na ktery meli v dobe vzniku volne kapacity. To by potom byl podobne neprustrelny argument jako v pripade Špičáka na záskok za Kachnu...
Sam udrzuju jeden vetsi projekt v Qt a myslim si, ze muzu hodnotit. Qt se snazi, ale nikdy se mu nepodarilo uplne prosadit. Uzivatelska zakladna proste neni dost velka. Qt bohuzel ujizdi vlak a je to cim dal vice videt. (GTK to - pokud vim - vzdalo uplne a port pro Windows opustili).
Jako uspesny se mi jevi pristup jaky ma MysqlWorkbench, koho to zajima at se podiva na jejich zdrojaky. Cele je to prevazne C++/STL plus minimalisticka GUI knihovna, ktera nativne pouziva par nativnich widgetu.
Cele je to hezke a svizne provnani na GUI ktere je cele v Javasriptu.
Ve vysledku vypada mnohem lepe nez Qt ktere si toho az prilis implementuje samo a jednoduse uz nedokaze drzet krok s konkurenci.
PS: Pak jsou tu jeste frameworky pro Javu, jako ma Eclipse anebo InteliJ, ty jsou ale extremne narocne udrzbu a verzovani a pro mensi projekty se nehodi.
Port na Win skončil soudem, protože se chtělo nahradit něco co má svou velkou zásluhu na telemetrii. Skončilo to dohodou...
Mě teda přijde, že Qt je použité tak v 90% multiplatformních aplikacích co jsou jak pro Windows tak pro Linux.
V těch C++. Páč tam ani moc jiných GUI toolkitů není (GTK je ve Windows a zvláště macOS dost nepoužitelné - chybí např. tmavý vzhled pro Windows a pro macOS chybí i světlý). Jenže dnes už spousta aplikací není v C++, pro nové projekty je prostě moc drahé. Neříkám, že core část, např. výpočty, není v C++, ale UI k tomu udělá nějaký junior v nečem, kde se nezamotá.
9. 10. 2024, 15:01 editováno autorem komentáře