<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Qt Labs Americas &#187; Português</title>
	<atom:link href="http://qtlabs.openbossa.org/category/portugues/feed/" rel="self" type="application/rss+xml" />
	<link>http://qtlabs.openbossa.org</link>
	<description></description>
	<lastBuildDate>Sat, 13 Mar 2010 05:31:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>pt</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Foi lançado o Qt 4.6 !</title>
		<link>http://blog.eduardofleury.com/archives/2009/12/98/</link>
		<comments>http://blog.eduardofleury.com/archives/2009/12/98/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 16:15:34 +0000</pubDate>
		<dc:creator>efleury</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Português]]></category>

		<guid isPermaLink="false">http://blog.eduardofleury.com/?p=98</guid>
		<description><![CDATA[Está disponível desde hoje cedo a versão 4.6.0 do Qt com diversas novidades, como diz o post oficial dos nossos amigos do Qt.
A nova versão está disponível para download em qt.nokia.com, em versões pré compiladas para Windows, MacOS e Symbian, além do código fonte (para todas as plataformas). Usuários Linux podem baixar e compilar o [...]]]></description>
			<content:encoded><![CDATA[<p>Está disponível desde hoje cedo a versão 4.6.0 do Qt com diversas novidades, como diz o <a href="http://labs.trolltech.com/blogs/2009/12/01/qt-460-released-early-due-to-good-behaviour/" >post oficial</a> dos nossos amigos do Qt.</p>
<p>A nova versão está disponível para download em <a title="Qt" href="http://qt.nokia.com/" >qt.nokia.com</a>, em versões pré compiladas para Windows, MacOS e Symbian, além do código fonte (para todas as plataformas). Usuários Linux podem baixar e compilar o fonte ou então instalar usando os procedimentos normais de cada distribuição, tão logo estejam disponíveis os pacotes desta versão.</p>
<p>Entre as novidades dessa versão estão:</p>
<ul>
<li>API de Animação (QAnimation)</li>
<li>Máquina de Estados (QStateMachine)</li>
<li>Novo layout (QGraphicsAnchorLayout)</li>
<li>Suporte para a plataforma Symbian, o que permite que o Qt rode em dezenas de milhões de novos aparelhos <img src='http://blog.eduardofleury.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
<p>A documentação atualizada com todas as novas classes está pronta também, ou pelo Qt Assistant ou <a title="Qt Docs" href="http://qt.nokia.com/doc/4.6/index.html" >online</a>.</p>
<p>Outro fato marcante desta versão é o fato de ser a primeira após a abertura do repositório Git do Qt, e assim marca uma integração cada vez maior com a comunidade. Nesse sentido esperamos que todos usem, testem e mandem opiniões e reports de eventuais bugs, para que as próximas versões sejam cada vez melhores!</p>
<p>Para ilustrar um pouco, <a title="Qt 4.6.0 video" href="http://www.youtube.com/watch?v=PCx8RfNhhXk" >um vídeo</a> feito pelo pessoal aqui do openBossa mostrando o 4.6.0 rodando em diversos aparelhos!</p>
<p><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/PCx8RfNhhXk&#038;hl=en_US&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/PCx8RfNhhXk&#038;hl=en_US&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></p>
<p>Para finalizar, algumas fotos do time do Qt.</p>
<p>Em Oslo</p>
<p><a title="Oslo Team" href="http://labs.trolltech.com/blogs/wp-content/uploads/2009/12/oslo1.jpg"><img width=340 height=255 src="http://labs.trolltech.com/blogs/wp-content/uploads/2009/12/oslo1.jpg" alt="Oslo Team" /></a></p>
<p>Em Berlin</p>
<p><a title="Berlin Development Team" href="http://labs.trolltech.com/blogs/wp-content/uploads/2009/12/berlin.jpg"><img width=340 height=192 src="http://labs.trolltech.com/blogs/wp-content/uploads/2009/12/berlin.jpg" alt="Berlin Development Team" /></a></p>
<p>Em Brisbane</p>
<p><a title="Brisbane Development Team" href="http://labs.trolltech.com/blogs/wp-content/uploads/2009/12/brisbane.jpg"><img width=340 height=255 src="http://labs.trolltech.com/blogs/wp-content/uploads/2009/12/brisbane.jpg" alt="Brisbane Development Team" /></a></p>
<p>Em Munich</p>
<p><a title="Munich Development Team" href="http://labs.trolltech.com/blogs/wp-content/uploads/2009/12/munich.jpg"><img width=340 height=96 src="http://labs.trolltech.com/blogs/wp-content/uploads/2009/12/munich.jpg" alt="Munich Development Team" /></a></p>
<p>Parabéns pessoal!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eduardofleury.com/archives/2009/12/98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt 4.6 &amp; mobile-demos (pt_BR)</title>
		<link>http://www.anselmolsm.org/blog/qt-4-6-mobile-demos-pt_br/</link>
		<comments>http://www.anselmolsm.org/blog/qt-4-6-mobile-demos-pt_br/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 16:11:46 +0000</pubDate>
		<dc:creator>anselmolsm</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Português]]></category>

		<guid isPermaLink="false">http://www.anselmolsm.org/blog/?p=1198</guid>
		<description><![CDATA[Hoje foi lançado o Qt 4.6.0! Também lançada a versão 1.3 do Qt Creator. Downloads em http://qt.nokia.com/downloads
Além das novidades desta versão, confira também os mobile-demos! (Código Aqui)
Pausa!
&#8220;O que é Qt?&#8221; -&#62; Veja um resumo aqui (embora esse artigo em português da Wikipedia precise dumas atualizações).
&#8220;Qt Creator?&#8221; -&#62; É uma IDE para desenvolvimento em Qt.
mobile-demos? Tá, [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje foi lançado o Qt 4.6.0! Também lançada a versão 1.3 do Qt Creator. Downloads em <a href="http://qt.nokia.com/downloads" >http://qt.nokia.com/downloads</a></p>
<p>Além das novidades <a href="http://qt.nokia.com/products/whats-new-in-qt" >desta versão</a>, confira também os <a href="http://qtlabs.openbossa.org/mobile-demos/" >mobile-demos!</a> (<a href="http://qt.gitorious.org/qt-labs/mobile-demos" >Código Aqui</a>)</p>
<p>Pausa!</p>
<p>&#8220;O que é <strong>Qt</strong>?&#8221; -&gt; Veja um <a href="http://pt.wikipedia.org/wiki/Qt" >resumo aqui</a> (embora esse artigo em português da Wikipedia precise dumas atualizações).</p>
<p>&#8220;<strong>Qt Creator</strong>?&#8221; -&gt; É uma IDE para desenvolvimento em Qt.</p>
<p><strong>mobile-demos</strong>? Tá, esse explico aqui =)</p>
<p>São alguns conceitos de aplicações criados pelos designers e desenvolvedores do openBossa visando principalmente dispositivos de telefonia móvel (vulgo &#8221;celulares&#8217;) Symbian / S60 &#8212; Plataforma que move cerca de vários celulares em todo o mundo, notoriamente (mas não exclusivamente) aparelhos Nokia.</p>
<p>Se você tem um celular S60 5th edition (N97, 5800), você encontra os pacotes em: <a href="http://qtlabs.openbossa.org/mobile-demos/" >http://qtlabs.openbossa.org/mobile-demos/</a></p>
<p>Quem tem celulares S60 3rd (por exemplo N95, N85), também podem rodar esses demos! Claro que com restrições, já que eles foram pensados para telas sensíveis a toque. Existem alguns branchs no gitorious com algum suporte ao teclado, quem sabe num futuro próximo teremos novidades =)</p>
<p>Se você já é um dos felizes proprietários de um N900, também <a href="http://qtlabs.openbossa.org/mobile-demos/" >temos pacotes para você</a>!</p>
<p>Se você está querendo ver do que se trata isso tudo, está rodando Windows e não quer se envolver com compilação, instalação de bibliotecas, etc, <span style="text-decoration: line-through;">aguarde que se possível ainda hoje haverá algo para você</span> veja os links abaixo do vídeo =)</p>
<p>Enquanto isso, confira o vídeo:</p>
<p style="text-align: center;"><!-- Smart Youtube --><span class="youtube"><object width="425" height="355"><param name="movie" value="http://www.youtube.com/v/PCx8RfNhhXk&amp;rel=1&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" /><param name="allowFullScreen" value="true" /><embed wmode="transparent" src="http://www.youtube.com/v/PCx8RfNhhXk&amp;rel=1&amp;color1=d6d6d6&amp;color2=f0f0f0&amp;border=0&amp;fs=1&amp;hl=en&amp;autoplay=0&amp;showinfo=0&amp;iv_load_policy=3&amp;showsearch=0" type="application/x-shockwave-flash" allowfullscreen="true" width="425" height="355" ></embed><param name="wmode" value="transparent" /></object></span></p>
<p style="text-align: center;">
<p><strong>Update:</strong></p>
<p>Aqui estão as versões para você que quer brincar com os demos no seu desktop. São binários com Qt 4.6.0 linkados estaticamente, para você que ainda está com uma versão anterior do Qt ou nem tem instalado.</p>
<p style="text-align: center;"><a href="http://www.anselmolsm.org/public/qt/mobile-demos_static-linux.tar.bz2" >Versão para Linux<br />
</a></p>
<p style="text-align: center;"><a href="http://www.anselmolsm.org/public/qt/mobile-demos_static-win32.zip">Versão para Windows</a></p>
<p style="text-align: center;">
<p style="text-align: center;">Mac: Estou sem mac no momento, contribuições são bem-vindas =)</p>
<p><img src="http://www.anselmolsm.org/blog/?ak_action=api_record_view&#038;id=1198&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anselmolsm.org/blog/qt-4-6-mobile-demos-pt_br/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt Labs Americas no Latinoware</title>
		<link>http://wouwlabs.com/blogs/jeez/?p=124</link>
		<comments>http://wouwlabs.com/blogs/jeez/?p=124#comments</comments>
		<pubDate>Tue, 20 Oct 2009 14:25:48 +0000</pubDate>
		<dc:creator>jeez</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Português]]></category>

		<guid isPermaLink="false">http://wouwlabs.com/blogs/jeez/?p=124</guid>
		<description><![CDATA[Entre 22 e 24 de Outubro estará acontecendo o Latinoware 2009, no Parque Tecnológico de Itaipu &#8211; Foz do Iguaçu.

Nós estaremos por lá! Eu e Anselmo Melo vamos ministrar um mini-curso de Qt 4.6 no sábado, 24/10. Teremos também palestras de Artur Souza, sobre o Plasma Netbook, Caio Marcelo e Eduardo Fleury falarão sobre Qt [...]]]></description>
			<content:encoded><![CDATA[<p>Entre 22 e 24 de Outubro estará acontecendo o <a href="http://www.latinoware.org/">Latinoware 2009</a>, no Parque Tecnológico de Itaipu &#8211; Foz do Iguaçu.</p>
<p>Nós estaremos por lá! Eu e Anselmo Melo vamos ministrar um mini-curso de Qt 4.6 no sábado, 24/10. Teremos também palestras de Artur Souza, sobre o Plasma Netbook, Caio Marcelo e Eduardo Fleury falarão sobre Qt Layouts, Ana Cecília (aninha) vai falar sobre Usabilidade em OSS usando seu GSoC como estudo de caso e Kenneth vai falar sobre o Webkit.</p>
<p>Caso queira entrar em contato, basta nos procurar nas referidas palestras ou no stand do INdT que estará em algum lugar do evento. <img src='http://qtlabs.openbossa.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br />
<BR><br />
Nos encontramos por lá!</p>
<p>jeez</p>
]]></content:encoded>
			<wfw:commentRss>http://wouwlabs.com/blogs/jeez/?p=124/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Latinoware 2009</title>
		<link>http://www.anselmolsm.org/blog/latinoware-2009-ptbr/</link>
		<comments>http://www.anselmolsm.org/blog/latinoware-2009-ptbr/#comments</comments>
		<pubDate>Tue, 20 Oct 2009 01:53:40 +0000</pubDate>
		<dc:creator>anselmolsm</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Português]]></category>

		<guid isPermaLink="false">http://www.anselmolsm.org/blog/?p=1163</guid>
		<description><![CDATA[Na próxima Quinta-feira, 22 de Outubro, começa a edição deste ano da Conferência Latino Americana de Software Livre &#8211; Latinoware 2009, e nós estaremos lá! =)
Cerca de 3800 pessoas estão inscritas para o evento e acredito que será um grande encontro com outros desenvolvedores, pessoas que conheço apenas por IRC ou e-mail, chance de conseguir [...]]]></description>
			<content:encoded><![CDATA[<p>Na próxima Quinta-feira, 22 de Outubro, começa a edição deste ano da Conferência Latino Americana de Software Livre &#8211; Latinoware 2009, e nós estaremos lá! =)</p>
<p>Cerca de 3800 pessoas estão inscritas para o evento e acredito que será um grande encontro com outros desenvolvedores, pessoas que conheço apenas por IRC ou e-mail, chance de conseguir parceiros para o  <a href="http://qtlabs.openbossa.org/" >Qt Labs Americas</a> em outros países da América Latina, e claro, aprender e conhecer novas coisas.</p>
<p>Aprender e também ensinar! =) Se você olhar a programação do evento, notará que alguns colegas farão apresentações lá. Entre eles, Artur de Souza (<a href="http://blog.morpheuz.cc/" >MoRpHeuz</a>) apresentará uma atualizada versão de sua palestra sobre Plasma Netbook (incluindo uma demonstração bem legal =). Já <a href="http://blog.cmarcelo.org/" >Caio Marcelo </a>e <a href="http://blog.eduardofleury.com/" >Eduardo Fleury</a> tratarão sobre novas possibilidades para o desenvolvimento de interfaces gráficas em Qt e KDE. Ainda temos nosso colega importado <a href="http://codeposts.blogspot.com/" >Kenneth Christiansen</a>, que falará sobre QtWebkit.</p>
<p>No último dia  (Sábado, 24 de Outubro) <a href="http://wouwlabs.com/blogs/jeez" >Jesus Sanchez-Palencia</a> e eu ministraremos um minicurso sobre o que há de novidade no Qt 4.6. Assim, pessoas interessadas no desenvolvimento com Qt e também KDE terão uma grande oportunidade de aprendizado, pois existem outros 2 cursos no programa, ministrados pelos colegas do <a href="http://liveblue.wordpress.com/" >Live Blue</a>, além é claro de poder ter contato com outros membros da comunidade KDE que estarão por lá =)</p>
<p>Além dos já mencionados, destaco também a apresentação que Ana Cecília (annieC) fará sobre um estudo de usabilidade em projetos de software livre.</p>
<p>Aos que forem para o Latinoware, nos vemos lá! Aos que não puderem comparecer, fiquem atentos que em breve teremos notícias.</p>
<p><img src="http://www.anselmolsm.org/blog/?ak_action=api_record_view&#038;id=1163&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anselmolsm.org/blog/latinoware-2009-ptbr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O QGraphicsAnchorLayout</title>
		<link>http://blog.eduardofleury.com/archives/2009/09/91/</link>
		<comments>http://blog.eduardofleury.com/archives/2009/09/91/#comments</comments>
		<pubDate>Mon, 21 Sep 2009 15:42:00 +0000</pubDate>
		<dc:creator>efleury</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Português]]></category>

		<guid isPermaLink="false">http://blog.eduardofleury.com/?p=91</guid>
		<description><![CDATA[No último artigo mencionei que o QGraphicsLayout, a ser lançado no Qt 4.6, já está disponível no repositório público do Qt.
Hoje gostaria de dar uma visão geral sobre como este novo layout funciona e sobre o porquê de estarmos tão animados com isso.
Para tal, vou falar um pouco sobre: os layouts que já existiam no [...]]]></description>
			<content:encoded><![CDATA[<p>No último artigo mencionei que o QGraphicsLayout, a ser lançado no Qt 4.6, já está disponível no repositório público do Qt.</p>
<p>Hoje gostaria de dar uma visão geral sobre como este novo layout funciona e sobre o porquê de estarmos tão animados com isso.</p>
<p>Para tal, vou falar um pouco sobre: os layouts que já existiam no Qt, o uso do Anchor Layout e finalmente, os problemas que são melhores resolvidos por ele. De agora em diante assuma que estou escrevendo sobre o universo QGraphicsView e assim, onde ler &#8220;widget&#8221; ou &#8220;layout&#8221;, entenda que me refiro a QGraphicsWidgets ou QGraphicsLayouts.</p>
<p><strong>QGraphicsLayouts existentes<br />
</strong></p>
<p>Até o Qt 4.5, estavam disponíveis os layouts Linear e de Grid. Com eles, como seus nomes indicam, usuários poderiam ter seus widgets alinhados lado a lado ou em formato de tabela, com widgets ocupando uma ou mais células.</p>
<p>No entanto, não era possível organizar os itens para que ficassem fora da tela ou que se sobrepusessem, total ou parcialmente. Além disto, para obter o resultado desejado em alguns casos, era necessário utilizar diversos layouts encadeados.</p>
<p><strong>O conceito do Anchor Layout<br />
</strong></p>
<p>Layouts anteriores funcionavam assim: o layout Linear pedia que você adicionasse items ao layout em uma determinada seqüência e assim os itens seriam arranjados lado a lado (ou um sobre o outro); no caso do layout de Grid o conceito era similar, mas com itens associados a índices X,Y para representar a linha e coluna onde eles deveriam ser inseridos.</p>
<p>O Anchor Layout quebra com este paradigma no sentido de que não existe um conceito pré-definido de como os itens devem ser dispostos. A posição final de cada item é totalmente dependente de como você cria as âncoras. Em outras palavras, o Anchor Layout é um layout muito, muito <em>flexível</em>.</p>
<p>Apesar da maioria dos layouts serem flexíveis até certo ponto, e permitirem que se configure parâmetros como o espaçamento entre itens ou as margens, o Anchor Layout eleva a flexibilidade a um novo patamar. Foi também um dos nossos objetivos, fazer com que o processo de criação do layout fosse algo simples. Não queríamos expor centenas de parâmetros abstratos ao usuário, ao invés disto, nós  queríamos disponibilizar uma conceito e uma API de alto-nível. Além de fazer com que seu uso seja mais gratificante, isto facilita a tarefa de transformar em código C++, as idéias e a maneira de pensar dos designers de interfaces. E é assim que surgiram <em>as âncoras</em>.</p>
<p>Neste layout, cada item possui seis pontos de ancoragem, que são esquerda, direita, topo, base e os centros horizontal e vertical. O usuário por sua vez, é responsável por conectar os pontos de ancoragem de diferentes itens entre eles, e com os pontos de ancoragem do próprio layout. Essas conexões são feitas através das tais âncoras, que têm tamanhos bem definidos.</p>
<p>Depois, com base em:</p>
<p>- as âncoras criadas,<br />
- os tamanhos mínimo, recomendado e máximo de cada item, e<br />
- o tamanho do layout propriamente dito.</p>
<p>o layout calcula as geometrias apropriadas para cada um dos widgets.</p>
<p><strong>Casos de uso do Anchor Layout no mundo real</strong></p>
<p>Aqui no openBossa nós temos trabalhado no desenvolvimento de interfaces ricas há um bom tempo, e foi com essa experiência como bagagem que começamos a contribuir com o pessoal do Qt no desenvolvimento do QGraphicsAnchorLayout.</p>
<p>A seguir você irá encontrar alguns dos nossos casos de uso que não eram bem tratados pelos layouts existentes e que são bem mapeados para âncoras.</p>
<p><em>Transição entre telas</em></p>
<p>Nós freqüentemente precisamos fazer uma transição entre duas telas de uma mesma aplicação. Imagine que o usuário executa alguma ação que causar o sumiço da tela atual para que uma nova apareça.</p>
<p>Em uma aplicação de interface rica nós provavelmente gostaríamos de animar tal transição. Duas das alternativas seriam tornar transparente ou embaçar a tela corrente até que a que está por vir se faça visível. Para alcançar tal efeito, nós precisamos que as duas telas ocupem a mesma posição na tela, sendo que a mais velha deverá estar na frente (índice Z maior). Em seguida, basta aplicar o efeito à tela que está na frente, por exemplo mudar sua opacidade, e pronto, temos o efeito!</p>
<p>Então, como poderíamos usar um layout comum para fazer um widget (a tela nova) ocupar o mesmo espaço que outro (a tela velha)? Não dava. Agora com âncoras, basta ancorar os lados de uma tela aos lados da outra (direita com direita, topo com topo, etc) e pronto!</p>
<div id="attachment_87" class="wp-caption aligncenter" style="width: 330px"><img class="size-full wp-image-87" title="AnchorLayout_Swallow" src="http://blog.eduardofleury.com/wp-content/uploads/2009/09/swallow.png" alt="Usage of AnchorLayout to set two swallows on the same place" width="320" height="348" />
<p class="wp-caption-text">Uso do AnchorLayout para colocar duas telas no mesmo lugar.</p>
</div>
<p><em>Items fora da tela</em></p>
<p>Outro &#8220;truque&#8221; que usamos na animação de interfaces é fazer um item &#8220;entrar&#8221; ou &#8220;sair&#8221; da tela. Por exemplo, imagine uma barra de ferramentas no topo da tela que desliza pra dentro da tela e depois pra fora. A idéia aqui é criar dois estados (usando QStates talvez) onde a barra está dentro da tela em um deles,. e fora no outro.</p>
<p>Mais uma vez, com os layouts comuns não poderíamos criar o estado &#8220;fora-da-tela&#8221;. Com âncoras, basta ancorar a base da barra ao topo do layout, por conseqüência a barra será colocada logo acima do layout, pronta para entrar na tela quando necessário.</p>
<div id="attachment_88" class="wp-caption aligncenter" style="width: 333px"><img class="size-full wp-image-88" title="AnchorLayout_Toolbar" src="http://blog.eduardofleury.com/wp-content/uploads/2009/09/toolbar.png" alt="Usage of AnchorLayout to set a toolbar on or off-screen." width="323" height="404" />
<p class="wp-caption-text">Uso do AnchorLayout para colocar um widget fora da tela.</p>
</div>
<p><em>Disposição orgânica</em></p>
<p>Existem também aqueles casos onde os designers criam um protótipo de tela com diversos itens arranjados de maneira disforme ou &#8220;orgânica&#8221;. Na maioria destes casos não é prático (ou possível) ter de usar diversos layouts encadeados para definir tal arranjo. No entanto, com um único Anchor Layout, todos os itens podem ser organizados de maneira precisa.</p>
<p><strong>Experimente!<br />
</strong></p>
<p>Existem outras situações não mencionadas onde um layout tão flexível também é útil. Eu acredito no entanto que os exemplos que coloquei aqui são suficientes para mostrar o tipo de problema que estamos tentando resolver. Por favor, experimente e nos diga o que achou. Todo o tipo de opinião é realmente bem vindo,  quanto à forma de uso, performance, API, recursos e assim por diante. Tudo será levado em conta para que vocês tenham uma boa ferramenta nova para usar no Qt 4.6.</p>
<p>Aproveitem <img src='http://blog.eduardofleury.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eduardofleury.com/archives/2009/09/91/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Anchor Layout disponível no repositório do Qt 4.6</title>
		<link>http://blog.eduardofleury.com/archives/2009/09/83/</link>
		<comments>http://blog.eduardofleury.com/archives/2009/09/83/#comments</comments>
		<pubDate>Tue, 08 Sep 2009 22:18:45 +0000</pubDate>
		<dc:creator>efleury</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Português]]></category>

		<guid isPermaLink="false">http://blog.eduardofleury.com/?p=83</guid>
		<description><![CDATA[Este post é para avisá-los que o layout de âncoras do Qt, o QGraphicsAnchorLayout,  está disponível no repositório do Qt 4.6.
Para olhar o código fonte ou fazer o download de um tarball do código fonte, visite o Gitorious do Qt.
Como o nome indica, a versão atual só é compatível com o canvas Graphics View, ou [...]]]></description>
			<content:encoded><![CDATA[<p>Este post é para avisá-los que o layout de âncoras do Qt, o QGraphicsAnchorLayout,  está disponível no repositório do Qt 4.6.</p>
<p>Para olhar o código fonte ou fazer o download de um tarball do código fonte, visite o <a href="http://qt.gitorious.org/qt/qt/commits/4.6" >Gitorious do Qt</a>.</p>
<p>Como o nome indica, a versão atual só é compatível com o canvas Graphics View, ou seja é um QGraphicsLayout, e não um QLayout. Esta versão ainda está em desenvolvimento e possui defeitos conhecidos, especialmente quando os itens são organizados de maneira impossível. No entato melhoras virão ao longo do próximo mês, podem esperar.</p>
<p>Enquanto a documentação não está pronta, veja a <a href="http://qt.gitorious.org/qt/qt/blobs/4.6/src/gui/graphicsview/qgraphicsanchorlayout.h" >declaracão da classe</a> QGraphicsAnchorLayout para conhecer sua API. Logo que possível eu publicarei algum material explicando melhor o seu uso.</p>
<p>Como sempre, comentários são bem vindos!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eduardofleury.com/archives/2009/09/83/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PySide</title>
		<link>http://setanta.wordpress.com/2009/08/19/pyside/</link>
		<comments>http://setanta.wordpress.com/2009/08/19/pyside/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 22:50:22 +0000</pubDate>
		<dc:creator>Marcelo Lira</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Português]]></category>

		<guid isPermaLink="false">http://setanta.wordpress.com/?p=418</guid>
		<description><![CDATA[Agora sim, chega de trabalhar na moitinha igual contra-regra, o negócio agora é público: PySide foi lançado!

Sim! E o que é PySide, você pergunta? São bindings da biblioteca Qt4 para linguagem Python criados pelo INdT e a Nokia (Moi, tamperelaiset!) sob licença LGPL. Minha equipe (não sou dono dela, minha no sentido de &#8220;nossa sem [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=setanta.wordpress.com&#38;blog=81848&#38;post=418&#38;subd=setanta&#38;ref=&#38;feed=1" />]]></description>
			<content:encoded><![CDATA[<p>Agora sim, chega de trabalhar na moitinha igual contra-regra, o negócio agora é público: <a title="PySide - Python for Qt4" href="http://www.pyside.org">PySide</a> foi lançado!</p>
<p style="text-align:center;"><a href="http://www.pyside.org"><img class="size-full wp-image-420 aligncenter" title="pyside-logo" src="http://setanta.files.wordpress.com/2009/08/pyside-logo.png?w=199&#038;h=102" alt="PySide - Python for Qt" width="199" height="102" /></a></p>
<p>Sim! E o que é <a title="PySide - Python for Qt4" href="http://www.pyside.org/">PySide</a>, você pergunta? São bindings da biblioteca <a title="Qt4" href="http://qt.nokia.com/">Qt4</a> para linguagem <a title="Python" href="http://www.python.org">Python</a> criados pelo <a title="Instituto Nokia de Tecnologia" href="http://indt.org.br/institutional/index.php">INdT</a> e a <a title="Nokia" href="http://www.nokia.com">Nokia</a> (Moi, tamperelaiset!) sob licença LGPL. Minha equipe (não sou dono dela, minha no sentido de <em>&#8220;nossa sem incluir o interlocutor&#8221;</em>) trabalhou feito louca e o lançamento foi uma beleza: tivemos um retorno positivo da comunidade e as notícias <a title="PySide - LGPL Python bindings for Qt" href="http://www.h-online.com/open/PySide-LGPL-Python-bindings-for-Qt--/news/114039">estão</a> <a title="PySide - Nokia-sponsored LGPL bindings to Qt" href="http://eli.thegreenplace.net/2009/08/19/pyside-nokia-sponsored-lgpl-bindings-to-qt/">aparecendo</a> <a title="PySide - Nokia-sponsored LGPL Python bindings for Qt" href="http://www.reddit.com/r/Python/comments/9brpf/pyside_nokiasponsored_lgpl_python_bindings_for_qt/">em</a> <a title="LGPL Python bindings for Qt released" href="http://codeposts.blogspot.com/2009/08/lgpl-python-bindings-for-qt-released.html">toda</a> <a title="PySide: Python for Qt" href="http://www.osnews.com/story/22019/PySide_Python_for_Qt">parte</a>.</p>
<p>E fornecemos não apenas o peixe mas também a vara (na boa): o <strong>gerador</strong> de bindings também está disponível. Mas qual a importância disso? Dada a notícia vou explicar com calma.</p>
<p>Antes de continuar repare na garrafinha de <em>Prince of Persia</em> no logo do <strong>PySide</strong>. É a marca usada em projetos do <a title="Qt Labs Americas" href="http://qtlabs.openbossa.org/">Qt Labs Americas</a>.</p>
<h1>Os Bindings</h1>
<p>O motivo primário da criação do <a title="PySide - Python for Qt4" href="http://www.pyside.org/">PySide</a> foi prover bindings Python da Qt4 sob a licença LGPL, para se alinhar com a oferta da Nokia da própria Qt4. Várias possibilidades de como fazer foram analisadas, e antes dessa frase começar uma discussão técnica infinita, todas as opções tinham pontos bons e ruins, mas não tão diferentes assim. A idéia do <a title="Smoke" href="http://techbase.kde.org/Development/Languages/Smoke">Smoke</a> foi uma das que mais gostamos e vale uma menção. No fim optamos por alterar um gerador de bindings existente (mais sobre isso abaixo) e usar o <a title="Boost" href="http://www.boost.org/">Boost.Python</a> para fazer meio-campo com a API <a title="CPython" href="http://pt.wikipedia.org/wiki/CPython">CPython</a>. Trocando em diagramas coloridos esse é o <a title="PySide - Python for Qt4" href="http://www.pyside.org/">PySide</a>:</p>
<p><img class="aligncenter size-full wp-image-425" title="PySide architecture with Boost.Python" src="http://setanta.files.wordpress.com/2009/08/boostqtarch.png?w=350&#038;h=220" alt="PySide architecture with Boost.Python" width="350" height="220" /></p>
<h1>O Gerador</h1>
<p>Escrever bindings pra uma biblioteca tão massivamente grande quanto Qt é uma tarefa&#8230; não, não é uma tarefa, é uma punição. Pessoas de bom senso que somos demos uma pesquisada por aí e optamos por adaptar o código do <a title="QtScriptGenerator" href="http://qt.gitorious.org/qt-labs/qtscriptgenerator">QtScript Generator</a>, que por sua vez é um fork do <a title="Qt Jambi" href="http://qt.gitorious.org/qt-jambi">Qt Jambi Generator</a>, e ambos são geradores de bindings QtScript e Java, respectivamente, desenvolvidos pela Trolltech (quando ela se chamava Trolltech).</p>
<p>O esquema de geração de bindings funciona assim:</p>
<p style="text-align:center;"><img class="size-full wp-image-422 aligncenter" title="Binding Generator Scheme" src="http://setanta.files.wordpress.com/2009/08/generator.png?w=510&#038;h=170" alt="Binding Generator Scheme" width="510" height="170" /></p>
<p>O arquivo <strong>global.h</strong> inclui todos os headers (pelo menos os desejados) da biblioteca sendo processada, e também define e desdefine flags do preprocessador. Arquivos <strong>typesystem.xml</strong> são descrições de como a biblioteca deve ser exportada para a linguagem alvo: classes rejeitadas, métodos renomeados, tipos convertidos e, muito importante, códigos escritos à mão para casos especiais e onde eles devem ser inseridos. Se não houver necessidade de alterações esse xml será apenas uma simples lista de classes, enums e funções.</p>
<p>Notem que não apenas forkamos o QtScript Generator, mas a convertemos de uma aplicação monolítica num esquema lib (que chamamos de <a title="API Extractor" href="http://www.pyside.org/home-binding/api-extractor/">API Extractor</a>) + front-end gerador. E mais uma figura pra explicar a idéia:</p>
<p><img class="aligncenter size-full wp-image-424" title="BoostPythonGenerator" src="http://setanta.files.wordpress.com/2009/08/boostgenerator1.png?w=510&#038;h=111" alt="BoostPythonGenerator" width="510" height="111" /> Teoricamente os projetos dos quais derivamos código poderiam ser alterados para usar o <a title="API Extractor" href="http://www.pyside.org/home-binding/api-extractor/">API Extractor</a> e compartilhar essa base de código (e bugs, e fixes, e melhorias). Além disso, o sujeito pode escrever front-ends que gerem outras coisas que não código: grafos de relacionamento entre as classes, estatísticas, algo-que-eu-não-pensei.</p>
<p>Agora a parte não tão bela. Num mundo perfeito o gerador de bindings C++ para Python geraria bindings de qualquer biblioteca C++ para Python, contudo da forma que se encontra agora o gerador serve <strong>apenas</strong> para bibliotecas baseadas em Qt. Grande vergonha! Considerando que o foco era criar o bindings Qt e os lançamos em versão beta, sugiro nos perdoar. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Claro que está nos planos resolver isso e tornar o gerador uma ferramente genérica e útil para mais pessoas.</p>
<p>Informação demais! Por hora, <a title="PySide - Downloads" href="http://www.pyside.org/downloads/">baixem</a>, testem, <a title="PySide Bugzilla" href="http://bugs.openbossa.org/">relatem bugs</a> e aproveitem. E se estiverem se sentindo sociais entrem no canal <strong>#pyside</strong> no FreeNode e assinem a <a title="PySide mailing list" href="http://lists.openbossa.org/listinfo/pyside">lista de discussão</a>.</p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:599px;width:1px;height:1px;">Bugzilla</div>
<p>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/setanta.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/setanta.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/setanta.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/setanta.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/setanta.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/setanta.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/setanta.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/setanta.wordpress.com/418/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/setanta.wordpress.com/418/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/setanta.wordpress.com/418/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=setanta.wordpress.com&#038;blog=81848&#038;post=418&#038;subd=setanta&#038;ref=&#038;feed=1" /></p>
]]></content:encoded>
			<wfw:commentRss>http://setanta.wordpress.com/2009/08/19/pyside/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Qt Labs Americas está no ar!</title>
		<link>http://www.anselmolsm.org/blog/qt-labs-americas-esta-no-ar/</link>
		<comments>http://www.anselmolsm.org/blog/qt-labs-americas-esta-no-ar/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 22:01:21 +0000</pubDate>
		<dc:creator>anselmolsm</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Português]]></category>

		<guid isPermaLink="false">http://www.anselmolsm.org/blog/?p=696</guid>
		<description><![CDATA[
Durante o aKademy / GCDS foi divulgado pela primeira vez o Qt Labs Americas e foi dito que em breve teríamos mais informações. Pois bem, chegou o dia! Hoje está oficialmente no ar o site http://qtlabs.openbossa.org !
Mas você me pergunta: &#8220;O que é isso, afinal?&#8221; &#8211; Citarei um trecho do texto que está no site:
O [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.anselmolsm.org/blog/files//blog_figure.png"><img class="aligncenter size-full wp-image-697" title="QtLabsAmericas" src="http://www.anselmolsm.org/blog/files//blog_figure.png" alt="QtLabsAmericas" width="487" height="125" /></a></p>
<p>Durante o <a href="http://www.grancanariadesktopsummit.org" >aKademy / GCDS</a> foi divulgado pela primeira vez o <strong>Qt Labs Americas</strong> e foi dito que em breve teríamos mais informações. Pois bem, chegou o dia! Hoje está oficialmente no ar o site <a href="http://qtlabs.openbossa.org" >http://qtlabs.openbossa.org</a> !</p>
<p>Mas você me pergunta: &#8220;O que é isso, afinal?&#8221; &#8211; Citarei um trecho do texto que está no site:</p>
<blockquote><p>O <strong>Qt Labs Americas</strong> é uma iniciativa do <strong>openBossa</strong> visando o desenvolvimento de comunidades com interesse em <strong>Qt</strong> e <strong>KDE</strong> em todo o território do continente americano, começando pelo <strong>Brasil</strong>.</p>
<p>Até então, o conteúdo produzido sobre este tema era focado no mercado Europeu e disponibilizado principalmente em Inglês. Os desenvolvedores brasileiros possuem a partir de agora um ponto de referência onde encontram, também em Português, informações sobre o desenvolvimento do Qt no Brasil e no mundo.</p>
</blockquote>
<p>Mais detalhes? A versão completa (em Português, Inglês e em breve em Espanhol) está em <a href="http://qtlabs.openbossa.org/about/" >http://qtlabs.openbossa.org/about/</a> . Lá também você encontra relação de projetos que estão de alguma forma envolvidos e os parceiros desta iniciativa.</p>
<p>Está de alguma forma relacionado com Qt e/ou KDE e quer fazer parte? Representa alguma universidade brasileira? Entre em contato através de <a href="mailto:qtlabs@openbossa.org" >qtlabs@openbossa.org</a> .</p>
<p>Assine os feeds dos blogs e das notícias! Para quem preferir, as notícias também são repassadas para o <a href="http://identi.ca/qtlabsamericas" >identi.ca</a> e <a href="http://twitter.com/qtlabsamericas" >twitter</a>.</p>
<p>Dúvidas? Escreva nos comentários (do blog de origem deste post) ou entre em contato conosco via e-mail!</p>
<p><img src="http://www.anselmolsm.org/blog/?ak_action=api_record_view&#038;id=696&#038;type=feed" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.anselmolsm.org/blog/qt-labs-americas-esta-no-ar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Layouts Animados com Qt Kinetic</title>
		<link>http://wouwlabs.com/blogs/jeez/?p=62</link>
		<comments>http://wouwlabs.com/blogs/jeez/?p=62#comments</comments>
		<pubDate>Thu, 26 Feb 2009 16:33:54 +0000</pubDate>
		<dc:creator>jeez</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[Português]]></category>

		<guid isPermaLink="false">http://wouwlabs.com/blogs/jeez/?p=62</guid>
		<description><![CDATA[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 &#8220;fancy UI&#8217;s&#8221; usando o framework Qt.
O vídeo a seguir mostra um demo simples que fizemos para [...]]]></description>
			<content:encoded><![CDATA[<p>Nesse último mês começamos a trabalhar diretamente com o pessoal da Qt Software (antiga Trolltech), no projeto Kinetic.<br />
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 &#8220;fancy UI&#8217;s&#8221; usando o framework Qt.<br />
O vídeo a seguir mostra um demo simples que fizemos para ilustrar melhor o que foi desenvolvido:</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/M3HbmrNvQl4&#038;hl=pt-br&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/M3HbmrNvQl4&#038;hl=pt-br&#038;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>
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.</p>
<p>
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. <img src='http://qtlabs.openbossa.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> <br />
Por enquanto a transição está &#8220;hardcoded&#8221; no LayoutProxy, mas já estamos trabalhando na versão final da api.<br />
Tem sido um trabalho bastante divertido, principalmente porque estamos trabalhando em cima do &#8220;bleeding edge&#8221; do Qt 4.5 &#8211; que por sinal sai como LGPL agora em março &#8211; e as api&#8217;s de animação e de states (QStateMachine) está muito boa, acreditem!</p>
<p><a href="http://labs.morpheuz.eng.br/blog/26/02/2009/animated-layouts-with-qt-kinetic/">Morpheuz também fez um post</a> com um ótimo overview e <a href="http://blog.eduardofleury.com/archives/2009/02/51/">Fleury postou</a> uma excelente explicação sobre os &#8220;internals&#8221;&#8230; Inclusive com figuras bastante explicativas! </p>
<p> <img src='http://qtlabs.openbossa.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://wouwlabs.com/blogs/jeez/?p=62/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using QAnimation to create Animated Qt Layouts</title>
		<link>http://blog.eduardofleury.com/archives/2009/02/51/</link>
		<comments>http://blog.eduardofleury.com/archives/2009/02/51/#comments</comments>
		<pubDate>Thu, 26 Feb 2009 15:22:27 +0000</pubDate>
		<dc:creator>efleury</dc:creator>
				<category><![CDATA[Blogs]]></category>
		<category><![CDATA[English]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Português]]></category>

		<guid isPermaLink="false">http://blog.eduardofleury.com/?p=51</guid>
		<description><![CDATA[In this post I&#8217;ll share a little bit about what we&#8217;ve been working with, Animated Layouts in Qt. To be more precise, how we have been animating QGraphicsLayouts.
Layouts
If you are familiar with Qt, chances are you have already used layouts and widgets a couple times. If you haven&#8217;t, try to think of a layout as [...]]]></description>
			<content:encoded><![CDATA[<p>In this post I&#8217;ll share a little bit about what we&#8217;ve been working with, Animated Layouts in Qt. To be more precise, how we have been animating QGraphicsLayouts.</p>
<p><strong>Layouts</strong></p>
<p>If you are familiar with Qt, chances are you have already used layouts and widgets a couple times. If you haven&#8217;t, try to think of a layout as a set of geometry rules, or principles, that are applied to the children widgets when the layout is associated to a parent widget.</p>
<p>In other words, imagine you have a box drawn on the screen, and, inside it, three widgets, say, a button, a checkbox and a label. Now imagine you want these three components to be organized somehow inside the box, horizontally aligned for instance. In Qt all you have to do is to apply an horizontal layout to the box and its widgets (button, checkbox and label) will follow the rules enforced by that layout.</p>
<p><strong>The Goal</strong></p>
<p>While existing layouts work fine for forms  other static UIs but lack something when seek the development of rich, animated, interfaces, as the one in <a title="Canola 2" href="http://openbossa.indt.org.br/canola/" >Canola 2</a>. In these scenarios animating from different layouts and/or different layout states is a must, and that&#8217;s what we went after. As the starting point, we focused on the <em>Graphics View Framework</em> and therefore started with QGraphicsLayouts rather than QLayouts. After talking with the guys at Qt Software we found a solution that enables:</p>
<ul><span></p>
<li>animated transitions from one QGraphicsLayout to a completely different one (grid to linear, for instance);</li>
<li>animated transitions from one QGraphicsLayout state to another (when an item is added for instance, or items are re-arranged);</li>
<li>works with all third-party QGraphicsLayout subclasses you may have coded to fit your personal needs; and</li>
<li>works with all third-party widgets.</li>
<p></span></ul>
<p><strong>The result</strong></p>
<p>A video is worth more than a bunch of words. <img src='http://blog.eduardofleury.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> In this demo we show:</p>
<ul>
<li>Addition of new items to a visible layout;</li>
<li>Change between three different layouts (horizontal, vertical and grid); and</li>
<li>Changes in the parent widget size.</li>
</ul>
<p><object width="425" height="344" data="http://www.youtube.com/v/M3HbmrNvQl4&amp;hl=en&amp;fs=1" type="application/x-shockwave-flash"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/M3HbmrNvQl4&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /></object></p>
<p>Can&#8217;t see the video? Watch it on YouTube:</p>
<p><a title="Animated Layouts Demo" href="http://www.youtube.com/watch?v=M3HbmrNvQl4" >http://www.youtube.com/watch?v=M3HbmrNvQl4</a></p>
<p><strong>The Usage</strong></p>
<p>This post is focused on the internals but read <a title="MoRpHeUz blog" href="http://labs.morpheuz.eng.br/blog/26/02/2009/animated-layouts-with-qt-kinetic/" >MoRpHeUz recent post</a> about this subject for the end-user point of view.</p>
<p><strong>The Solution</strong></p>
<p>We had a strong requirement of providing compatibility with 3rd party layouts and widgets, we also couldn&#8217;t break Qt&#8217;s API or ABI. To understand the next step it is necessary to know a little bit about how QGraphicsLayouts work in Qt, but, in a nutshell what happens when a layout is applied to a widget is the following:</p>
<ul>
<li>When the parent widget (the outer box) undergoes a change (is resized for instance), its associated layout is informed about it.</li>
<li>The layout recalculates new geometries for each of the child widgets (the label, the button and the checkbox).</li>
<li>The layout sets the new children geometries.</li>
</ul>
<p>What we did was to create an Animated Layout Proxy that sits between the Layout and each of the child widgets. Due to the way Qt is organized what is expected then is that our proxies pass along the geometry change information they received from the layout to the item below it. The <em>trick</em> here is that rather than sending the geometry change request immediatelly, the Proxy creates a QAnimation from the former state to the new one. The result after the animation is finished is the same, the child widgets were set to their new geometries, what is different however is that the widget moves in an animated, sleek way, rather than at once, which is the standard.</p>
<p>The high-level diagram below shows how the Animated Layout Proxy is inserted in the existing QGraphicsLayoutItem hierarchy. Other relationships were omitted to keep things simple.</p>
<p><img class="size-full wp-image-56" title="proxy" src="http://blog.eduardofleury.com/wp-content/uploads/2009/02/proxy.png" alt="Qt Animated Proxy Layout diagram" width="600" height="372" /></p>
<p>Cheers,<br />
Fleury</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eduardofleury.com/archives/2009/02/51/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
