Portál AbcLinuxu, 4. května 2025 18:43

Novinky v Qt 4.6

11. 9. 2009 | David Watzke
Články - Novinky v Qt 4.6  

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.

Obsah

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.

Animační framework

link

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.

qt46 animatedtiles

State Machine framework

link

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.

Multi-touch a gesta

link

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.

qt46 gestures

API pro přístup k DOM

link

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");

Lepší podpora 3D

link

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.

Výkonnostní optimalizace

link

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.

Modul QtMultimedia a práce se zvukem

link

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 + JavaScriptCore z WebKitu

link

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.

Qt for S60 aneb port Qt na Symbian

link

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“.

Závěr

link

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.

Související články

Seriál: Qt 4 – psaní grafických programů
Seriál: Qt 4 – Konzolové programy
Cmake: zjednoduš si život
Seriál: Kommander
Seriál: KDE: tipy a triky
Seriál: Začíname KProgramovať

Odkazy a zdroje

What's New in Qt 4.6

Další články z této rubriky

LLVM a Clang – více než dobrá náhrada za GCC
Ze 4 s na 0,9 s – programovací jazyk Vala v praxi
Reverzujeme ovladače pro USB HID zařízení
Linux: systémové volání splice()
Programování v jazyce Vala - základní prvky jazyka

Diskuse k tomuto článku

Josef Kufner avatar 11.9.2009 00:53 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
Odpovědět | Sbalit | Link | Blokovat | Admin
To je snad poprvé, kdy vidím v nějaké knihovně stavový automat. A přitom je to taková užitečná věc...
Hello world ! Segmentation fault (core dumped)
11.9.2009 06:27 Nano
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
A to to puvedne chteli pouzivat akorat u grafickych prechodu...
11.9.2009 22:04 frr | skóre: 34
Rozbalit Rozbalit vše Re: Novinky 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 :-)

[:wq]
11.9.2009 23:42 ::: | skóre: 14 | blog: e_lama
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
to bude tim ze implementovat stavovy automat je tak jednoduchy ze delat na to knihovnu je nesmysl...

v podstate staci jedna promena typu int na reprezentaci stavu... ;-)
12.9.2009 15:24 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
Houby, žádná proměnná není potřeba, stav je přece v PC!

No a pak je tu realita. Konečný automat implementovaný jako knihovna má kromě svojí explicitnosti (reuse, anyone?) a z ní vyplývající možnosti deklarativního programování (DSL, anyone?) i další výhody, třeba potenciální možnost uchovat stav mezi dvěma běhy programu (BPM, anyone?).
Ještě na tom nejsem tak špatně, abych četl Viewegha.
15.9.2009 21:33 ::: | skóre: 14 | blog: e_lama
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
ad reuse - o kolik tezsi je zkopirovat "int s;" nez "qautomat a;" ??

ad deklarativni programovani - zbytecne bys pridaval dalsi vrstvu tam kde nejenom ze neni potreba, ale je tam na obtiz...

ad moznost uchovat stav - hodnotu promenne typu int si snad nemuzu nekde uchovat ?????????? A na rozdil od objektu ju muzu ulozit kam bude ptoreba (db, file, ...). V pripade knihovny jsem omezenej tim co naprogramoval autor knihovny...
15.9.2009 21:58 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
To je úplně mimo. Tím myslím úplně, konečný automat, kde je stav vyjádřený jednou číselnou proměnnou, je úplně stejně užitečný jako takový, kde je stav vyjádřený místem v programu. Na ruční napsání lexeru dobré, a tím to asi tak hasne.

Když jím chcete popsat proces, tak potřebujete oddělit strukturu automatu (jeho přechodovou funkci) od zpracování vstupů a generování výstupů (typicky v podobě událostí). Teda já vím, vy NIHisti nepotřebujete, ale vy nejste zajímaví. A to nemluvím o tom, že těch automatů často chcete mít víc, nebo je nedej bože vyrábět dynamicky.
Ještě na tom nejsem tak špatně, abych četl Viewegha.
xkucf03 avatar 12.9.2009 16:01 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Netbeans

Např. v Netbeans je tohle už pěkně dlouho u J2ME. :-)

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
18.11.2009 12:02 vencas | skóre: 32
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
boost::statechart ?
Jardík avatar 11.9.2009 00:54 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
Odpovědět | Sbalit | Link | Blokovat | Admin
Zdá se mi to, nebo jsem to už někde četl ... no ano, článek byl "ukraden" a přeložen. Snad máte svolení původního autora.
Věřím v jednoho Boha.
11.9.2009 07:29 .
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6

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.

Jan Drábek avatar 11.9.2009 08:27 Jan Drábek | skóre: 41 | blog: Tartar | Brno
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6

Zajdi na oční, jasně odkaz vidím odkaz v sekci

Odkazy a zdroje

pod článkem.

01010010 01000101 01010000 01101100 01001001 00110010 01000100 01100101 01010110
11.9.2009 08:33 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
Co bys chtěl, když se dá dohromady anonym a troll
Quando omni flunkus moritati
Jardík avatar 11.9.2009 10:07 Jardík | skóre: 40 | blog: jarda_bloguje
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
Tak to se omlouvám, já do teď několik let žil v domnění, že v tom rámečku jsou reklamy a utomaticky jsem to přeskakoval :-)
Věřím v jednoho Boha.
11.9.2009 10:51 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
Ten rámeček, myslím si, přeskakuje víc lidí. Já taky.
Ještě na tom nejsem tak špatně, abych četl Viewegha.
13.9.2009 22:03 .
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6

Já taky

16.9.2009 09:32 Tom K | skóre: 22
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
Jaký rámeček ?
echo -n "u48" | sha1sum | head -c3; echo
Nikola Ciprich avatar 11.9.2009 12:57 Nikola Ciprich | skóre: 23 | blog: NiX_blog | Palkovice
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6

 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...

Did you ever touch the starlight ? Dream for a thousand years? Have you ever seen the beauty Of a newborn century?
11.9.2009 13:20 Andrej Herceg | skóre: 43
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
Niečo také nie je napísané ani pri seriáli "Jaderné noviny" a nikomu to nevadí. Maximálne sa z času na čas objaví, že by tam mohol byť odkaz na pôvodný článok (ktorý tam samozrejme vždy je).
Nikola Ciprich avatar 11.9.2009 14:02 Nikola Ciprich | skóre: 23 | blog: NiX_blog | Palkovice
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6

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)

Did you ever touch the starlight ? Dream for a thousand years? Have you ever seen the beauty Of a newborn century?
11.9.2009 12:37 psonek | skóre: 20 | blog: psonek
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
Za ukradení a přeložení děkuju :)
belisarivs avatar 11.9.2009 08:21 belisarivs | skóre: 22 | blog: Psychobláboly
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
Odpovědět | Sbalit | Link | Blokovat | Admin

.. základ grafických ovladacích ...

IRC is just multiplayer notepad.
11.9.2009 08:32 trekker.dk | skóre: 72
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
Odpovědět | Sbalit | Link | Blokovat | Admin

Výkonnostní optimalizace

Odstraněna byla podpora Windows 9x.
LOL
Quando omni flunkus moritati
11.9.2009 09:57 mikro
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
Odpovědět | Sbalit | Link | Blokovat | Admin

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! ;-)

11.9.2009 15:12 kralyk z abclinuxu | skóre: 29 | blog:
Rozbalit Rozbalit vše Re: Novinky v Qt 4.6
Odpovědět | Sbalit | Link | Blokovat | Admin
K těm animacím: už jsem se chystal o tom napsat blogpost, ale nebudu nosit dříví do lesa...
Více informací na toto téma se dá najít na qt labs, konkrétně kinetic a declarative ui - QML.
Celá věc vypadá velmi pěkně, viz např tohle video ale dá se jich najít víc.

Některé zdrojáky jsou na gitoriu.
SPD vůbec není proruská

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.