Um Framework LGPL Multiplataforma Wagner Reck
Resumo O que é Breve histórico Principais Módulos e Ferramentas Novidades por vir
Qt is......a cross platform application and UI framework qt.nokia.com/products...a cross platform application framework that is widely used for developing application software with graphical user interface, and also used for developing non GUI programs such as command line tools and consoles for servers. http://en.wikipedia.org/wiki/qt_(framework)
Que plataformas o Qt roda? Oficialmente: Windows (XP,Vista,7, CE), Linux/X11, Mac (Osx), Symbian (S60), Maemo, Meego, Linux embarcado Ports pela comunidade: Android, IPhone, Qnx, VxWorks, ReacOS, Haiku, Linux/Wayland, opensolaris, webos, OS/2... Alguns ainda em desenvolvimento
Algumas Caracteristicas API intuitiva Ótima documentação Compatibilidade entre versões Modular Utiliza renderização nativa Performace do C++ bindings para outras linguagens se necessário
Quem usa Qt?
Onde Qt está presente?
Breve Histórico Primeira versão disponibilizada em 1995, por Haavard Nord e Eirik Chambe-Eng; Em 1997 o Qt passa a ser utilizado no desenvolvimento do KDE e a versão 1.3 é lançada; Em 1999, o Qt 2 passa a ser licenciado pela QPL;
Breve Histórico Em 2000 é lançado o Qtopia (Qt para ambientes embarcados); Neste mesmo, o Qt passa a ser licenciado pela GPL; Em 2001 é lançado o Qt3; Em 2005 é lançado o Qt4: primeira versão open-source em todas as plataformas; Em janeiro de 2008 a Trolltech é comprada pela Nokia.
Breve Histórico 2009 Adicionada licença LGPL; 2009-2010 Suporte a S60, Meego e Maemo; Versão 1.0 Nokia Qt SDK (Mobilly API + Simulator + Remote compiler); Nova ferramenta de desenvolvimento de interfaces QtQuick;
Qt é Modular Necessita instalar/prover apenas os módulos utilizados Diminuição do espaço utilizado (dispositivos embarcados) Modulos: ferramentas e Bibliotecas
Ferramentas Qmake Linguist Designer Assistant QtCreator Plugin para Eclipse/Visual studio
Módulos
QtCore Provê suporte básico Containers (strings, listas, hash, map) Internacionalização Comunição inter objetos Funções globais: qrand(), qabs(), qmax()
GUI Componentes básicos QLabel QLineEdit QPushButom QComboBox Diferentes layouts grid, ancora, formulario...
Designer
Gráficos 2D Classes do Graphics/View divididas em: Cenas: Agrega os itens gráficos Visualizações : Viewport de uma cena Suporte a milhares de itens Suporte a opengl (sem escrever códigos OpenGL)
Mainwindow
Documentos de Texto Rico Permite criar documentos de forma programática Exportar para ODT PDF HTML Imagens (SVG) Impressora
SQL Acompanha drivers para os principais SGBDs Podem ser mantidas multiplas conexões abertas QSqlDatabase conn = QSqlDatabase::addDatabase("QSQLITE", "DB") conn.setdatabasename("database") conn.open()
SQL Exemplo de consulta: QSqlQuery q (conn); q.exec ( SELECT * FROM table; ); while (q.next()) process(q.value(0)); process(q.value(1).totime());
Threads 1- Escrever o processamento: void function (QString filename){ // process file } 2 - Prepara os itens a serem processados: QStringList list; list << "file1.txt" << "file2.txt" <<... ; 3 - dispara o processo: QtConcurrent::map(list, function);
Multimidia Para pequenos efeitos Qsound/QMovie Aplicações multimidia Phonon Maior controle sobre a midia ex. VLC / Amarok
Gestos e Multitoque Manipulação com gestos Zoom Rolar lista Gestos customizados Gestos para executar ações únicas
XML 2 tipos (básicos) de parser Sax XML maiores Dom XML menores Uso de padrões XML Xquey, Xpath, Validação de schema xml
Animação Facilita a criação de interfaces fluídas Escolha da propriedade a alterar Definição do valor final e tempo Escolha da curva de animação Execução em sequência ou paralelas
Webkit Início com Khtml Usado em vários navegadores No QT widgets dentro de páginas HTML Interação com os recursos da aplicação
QtQuick Permite a criação de interfaces fluidas Linguagem declarativa para UI (QML) Pode se comunicar com código Qt já existente É trasparente para redes Não importa se arquivo está no PC ou WWW
Exemplo QML import QtQuick 1.0 Rectangle { width: 200 height: 200 Text { text: "Hello World" font.pixelsize: 22 anchors.centerin: parent } }
Exemplo QML } Text{... font.pixelsize: 22 MouseArea{ id: textmousearea anchors.fill: parent } color: textmousearea.pressed? "gold" : "black"; }
Próxima Versão Modularização dos módulos Facilita novas contribuições Lighthouse Facilitar o port para outras plataformas Open Governance Tornar público: roadmap, listas, QA
Documentação Qt qt.nokia.com/developer qt.nokia.com/doc revistaqt.blogspot.com qtcentre.org
Obrigado Wagner Reck kders.wordpress.com wagner.reck@gmail.com