26 February, 2009

Layouts Animados com Qt Kinetic

Filed under: dev,qtlabs_pt — jeez @ 13:33

Nesse último mês começamos a trabalhar diretamente com o pessoal da Qt Software (antiga Trolltech), no projeto Kinetic.
A primeira questão que resolvemos lidar foi a transição animada de Layouts. Esse tipo de solução facilitará ainda mais o desenvolvimento de “fancy UI’s” usando o framework Qt.
O vídeo a seguir mostra um demo simples que fizemos para ilustrar melhor o que foi desenvolvido:

Nele você pode ver que temos 3 layouts (um vertical, um horizontal e um grid), aos quais vamos adicionando itens. Também fazemos resize nos layouts e temos a transição animada entre eles.

Para chegarmos nesse resultado, implementamos o QGraphicsLayoutProxy. A idéia é ter um layout proxy em cada layout da sua aplicação, mas que apontem para um mesmo widget. Quando uma mudança entre layouts ocorre, os proxies se responsabilizam por animar a transição dos widgets pelos quais são responsáveis. :)
Por enquanto a transição está “hardcoded” no LayoutProxy, mas já estamos trabalhando na versão final da api.
Tem sido um trabalho bastante divertido, principalmente porque estamos trabalhando em cima do “bleeding edge” do Qt 4.5 – que por sinal sai como LGPL agora em março – e as api’s de animação e de states (QStateMachine) está muito boa, acreditem!

Morpheuz também fez um post com um ótimo overview e Fleury postou uma excelente explicação sobre os “internals”… Inclusive com figuras bastante explicativas!

;)

3 Comments »

  1. [...] <portuguese>Há também uma visão geral em português a respeito neste post. [...]

  2. As transições ficaram muito boas – o vídeo ficou bonito até demais!
    Será que vocês não fariam um vídeo/exemplo com layouts com conteudo real? :)

    Comment by ana — 27 February, 2009 @ 17:42
  3. Ana, acho que esse post mostra um exemplo mais real, tipo o que você pediu! ;)

    http://wouwlabs.com/blogs/jeez/?p=99

    Comment by jeez — 3 April, 2009 @ 19:02

RSS feed for comments on this post. TrackBack URL

Leave a comment