Portál AbcLinuxu, 4. května 2025 18:43
Animační framework. State Machine framework. Multi-touch a gesta. API pro přístup k DOM. Lepší podpora 3D. Výkonnostní optimalizace. Modul QtMultimedia a práce se zvukem. QtScript + JavaScriptCore z WebKitu. Qt for S60 aneb port Qt na Symbian.
9. 9. 2009 vyšla nová vývojová verze frameworku Qt, a to 4.6.0 Tech Preview 1. To znamená, že první stabilní verze řady 4.6 je již na dohled. V tomto článku se dozvíte, jakých novinek se v této řadě Qt dočkáme.
Nový animační framework umožňuje vytvářet animované GUI bez nutnosti spravování složitých struktur a dalších komplikací. Usnadňuje animování QObject (zákl. třída všech Qt tříd), včetně QWidget (tj. základ grafických ovládacích prvků). Kromě animace standardních operací umožňuje i vytváření vlastních animací. Animovat lze i QGraphicsWidgety.
Další novinkou je tzv. State Machine framework (stavový automat). Poskytuje implementaci stavových diagramů, založenou na práci D. Harela a na SCXML. Pomocí nového API můžete vytvořit takovéto diagramy a spouštět je. Mezi hlavní výhody patří zjednodušení komplexního kódu a také skutečnost, že díky tomu bude událostmi řízené programování robustnější a více opakovaně použitelné.
Framework pěkně zapadá do Qt díky tomu, že přechody (transitions) lze spustit na základě signálu nebo QEvent. Vložením animací do stavového automatu lze framework použít pro snadné vytváření animovaného GUI.
Především uživatelé dotykových displejů ocení podporu multi-touch, která umožňuje zpracovat více doteků najednou. S touto novinkou přichází i podpora gest.
Webové stránky a XML mají velmi složité objektové modely dokumentu (DOM). Toto nové rozhraní poskytuje jednoduchý přístup k těmto strukturám. Podporuje nejen tagy, ale i CSS selektory.
QWebElement document = frame->documentElement(); QList<QWebElement> allSpans = document.findAll("span"); QList<QWebElement> introSpans = document.findAll("p.intro span");
Nové 3D API má za cíl zjednodušit tvorbu 3D OpenGL programů. Mezi hlavní vlastnosti v tuto chvíli patří primitiva pro násobení matic, vektory, čtveřice (quaternions) a API pro vertex a pixel shadery, GLSL/ES. V budoucnosti přibude podpora šablon (stencils), vertex bufferů a polí, geometry shadery a možnost manipulace s texturami.
Dočkáme se i několika výkonnostních optimalizací. Byl přepsán vykreslovací algoritmus třídy QGraphicsView a snížena režie třídy QNetworkAccessManager. Novinkou je třída QContiguousCache, která poskytuje efektivní kešování sousedících dat. Odstraněna byla podpora Windows 9x.
Qt 4.6 přináší nové třídy pro práci s multimédii (viz relativně čerstvý blogový zápis jednoho z vývojářů Qt: Multimedia in Qt, what’s the story?), hlavně se zvukem. Tyto třídy poskytují nízkoúrovňový přístup ke zvukovému systému operačního systému. Uvedením formátu a dodáním zvukových dat přes QIODevice získáte přímý přístup k funkcím zvukového zařízení.
QtScript bude používat JavaScriptCore z WebKitu. Toto je velmi pozitivní zpráva v kombinaci s tím, že by měla být 100% zachována kompatibilita. Interpreter JavaScriptu ve WebKitu je totiž výrazně rychlejší než ten, který QtScript používal doteď. Především u rozsáhlejších projektů to bude znát.
Port Qt na mobilní OS Symbian (S60) byl integrován do Qt 4.6. V tuto chvíli (v době verze 4.6 TP1) je port v horším stavu než ukázkové vydání Tower založené na 4.5 – QtScript v něm zatím nefunguje, právě kvůli nedávné změně backendu. WebKit zatím také nefunguje. Pokud tedy nepotřebujete přímo něco ze 4.6, je zatím lepší zůstat u verze „Tower“.
Na závěr se můžete podívat na video, ve kterém jeden z vývojářů v krátkosti mluví o novinkách v Qt 4.6.
Pokud se týče stavových automatů, tak se pravidelně potýkám s jedním takovým v Nokii 6021 - v oblasti modrého zubu, ve spolupráci s Parrot HandsFree sadou (což je patrně irelevantní). Resp. jsou tam zřejmě ty stavové automaty dva, na dvou různých vrstvách (GUI a low-level modrozubý stack), a jsou nedostatečně synchronizované. Konkrétně: mám zapnutý a připárovaný modrý zub. Odejdu kus od auta, ne moc daleko, ale už natolik, že se modrý zub nedomluví. Vypnu modrý zub - telefonu to chvíli trvá, nakonec prohlásí modrý zub za vypnutý, moucha v rohu displeje zmizí. Nojo - ale když se vrátím k autu, tak Parrot kuňkne, že se mobil připároval! A handsfree normálně funguje. Přitom GUI mobilu tvrdošíjně tvrá na tom, že modrý zub je vypnutý. Pomůže jedině "vystoupit a nastoupit" - tedy warm reboot mobilu (vypnout a zapnout). Není třeba vyndavat baterku... Čili když slyším o funkcích pro stavové automaty v knihovně od Nokie, cukají mi koutky
Např. v Netbeans je tohle už pěkně dlouho u J2ME.
Jen doplním, že článek byl ukraden (v textu není ani odkaz na originál - zatím) z http://qt.nokia.com/doc/4.6-snapshot/qt4-6-intro.html.
Zajdi na oční, jasně odkaz vidím odkaz v sekci
pod článkem.
no ja bych asi hned nepouzil slova o kradeni, ale na druhou stranu ze to je preklad ciziho clanku jsem pochopil az jste o tom napsal (a ten odkaz jsem chvili hledal). myslim ze by bylo ferovejsi tuto skutecnost uvadet hned v uvodu...
nj, jenze serial jaderne noviny uz ma dost dlouhou tradici (par cisel jsem kdysi i sam prekladal :))
ostatne mam pocit ze kdysi neco takoveho v hlavicce i byvalo (ale to mozna bylo jeste na linuxworldu)
.. základ grafických ovladacích ...
LOLVýkonnostní optimalizace
Odstraněna byla podpora Windows 9x.
Nechapem ako to pani z Trolltechu/Nokie robia, ale zakazdym, ked zistim, ze by som potreboval nejaku cool feature, tak zistim, ze tam bud uz je alebo ju pripravuju do dalsej verzie. Napr. teraz je to spominane DOM API, to je neuveritelne!
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.