Posts Tagged qt

Como tomar três rasteiras pra fazer um sinal/slot no Qt Designer

Bom, eu não sabia nada de Qt. E não tinha lido nenhum livro. Mas ao ler tutorial Signal and Slots da documentação, me senti confiante pra usá-lo no meu primeiro projeto. Só quero contar alguns cuidados adicionais caso pretenda fazer o mesmo mas usando tipos personalizados para os seus sinais e  esteja no meu nível de (des)conhecimento do Qt.

  1. A primeira rasteira está quase toda escrita no documento citado. Você precisa avisar que sua classe é especial, isto é, tem lógica de sinais e slots. Isto é feito através da macro Q_OBJECT, que deve ser colocada dentro da sua classe e através da herança de QObject. O que não está muito claro pra quem não tem experiência com Qt ou QtDesign é que você precisa garantir que seu .h está listado dentro do arquivo de projeto (com .pro no final)  na diretiva HEADERS e que é necessária uma chamada explícita de “run qmake” no menu para processar as palavras chaves adicionais do Qt (eu imaginei que o QtDesigner fazia isto pra mim, “Santa ingenuidade, Batman !”). Eu fiquei na dúvida se é necessário um “rebuild all” depois, fiquei com a impressão que sim, mas não sei afirmar ainda  com certeza. Comentários para os leigos como eu são bem vindos.
  2. A segunda rasteira foi em achar que eu poderia usar um método com o formato “on_nome_do_metodo” para os meus slots, como os elementos da interface gráfica fazem. Segundo o pessoal do fórum QtCentre, não pode. Bom, com on_ não compilava.
  3. A terceira rasteira eu tomei ao usar tipos personalizados nos sinais. Ok, isto nem é recomendado pois diminui o reuso do sinal. Mas eu precisava que fosse assim. Desta vez, a mensagem foi mais clara para um iniciante, algo como “Make sure  <sua classe> is registered using qRegisterMetaType“. O mecanismo de sinais/slot é sofisticado e tem checagem dinâmica de tipos e fila, mas os tipos precisam ter sido registrados antes. No meu caso, era uma estrutura e era necessário a chamada de Q_DECLARE_METATYPE(nome_da_estrutura) dentro do .h e depois, antes de qualquer uso do sinal, qRegisterMetaType<nome_da_estrutura>(“nome desejado para o tipo”) dentro de algum .cpp.

Finalmente o connect funcionou e o sinal foi corretamente emitido. Não se esqueça que um signal é apenas declarado no .h, não crie o método no .cpp. Isto está na documentação e, obviamente, eu só fui ver na segunda leitura. Logo, não foi uma rasteira, foi mais uma “bobeira”, das várias cometidas.

E não esqueça também dos .h relacionados, como #include <QMetaType> para as macros de tipo personalizado e #include <QObject> para os sinais e slots (não, isto eu não esqueci!).

No mais, continuo adorando o Qt/QtDesigner. Tenho gostado muito como os projetistas criaram os objetos, seus métodos e formas de uso. Até esqueci que várias palavras chaves foram adicionadas ao C++, como signal, slot, foreach, emit .. A documentação é boa e ajuda bem (olhe apenas a da versão que estiver usando, tomei outras rasteiras por achar que era tudo igual).

Além disso, como meus objetivos com Qt saem do PC e vão para o S60 e, em breve, para o PyQt for S60, não tem nada melhor pra aprender agora !

2 Comentários

Qt embedded widgets e HMI

Muito interessante este vídeo liberado pelo pessoal do Qt labs. A idéia é mostrar um aplicativo construído com widgets Qt para uso em HMIs (Interfaces Homem-Máquina). Detalhe: rodando em Windows CE, Linux (N810) e Windows.

Fonte: Qt Labs

, , ,

Deixe um comentário

Maemo já, Symbian em breve e QT LGPL

E, com certeza, a melhor notícia (tecnológica) do dia foi a Nokia liberando o QT como LGPL (2.1) ! Amplamente divulgada, esta notícia aproxima a Nokia ainda mais da comunidade de software livre e parece carregar promessas de interfaces Linux+QT em smartphones e tablets num futuro muito mais próximo do que eu imaginava. Também coloca em pé de igualdade o GTK+ e o KDE QT , já que antes somente o GTK+ tinha a possibilidade de ser usado como LGPL.

Vale lembrar que existem promessas de abertura do Symbian e que o projeto Maemo, que roda em tablets como o N800 e N810, já é open source.

Depois sou fanboy da Nokia e o pessoal me critica :-D

http://www.qtsoftware.com/about/news/lgpl-license-option-added-to-qt

http://labs.trolltech.com/blogs/2009/01/14/nokia-to-license-qt-under-lgpl/

,

5 Comentários

Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 504 outros seguidores