Desenvolva GUI com Qt Conteúdo - TerraLAB
Transcrição
Desenvolva GUI com Qt Conteúdo - TerraLAB
Desenvolva GUI com Qt Prof. Tiago Garcia de Senna Carneiro Departamento de Computação Universidade Federal de Ouro Preto Prof. Tiago G. S. Carneiro DECOM - UFOP Conteúdo • • • • • • Introdução ao Qt Ferramentas Qt Arquitetura Qt Porque usar Qt Mecanismo de Callback Núcleo Qt: Signals & Slot Prof. Tiago G. S. Carneiro DECOM - UFOP 1 Introdução ao Qt • Qt é um padrão de alto desempenho para o desenvolvimento de aplicações multi-plataforma em C++. • É formada por uma biblioteca de classes C++: – GUI, Banco de Dados, XML, Networking, OpenGL, Multithreading, ... • E por ferramentas para desenvolvimento de software mais produtivo. – Projeto de GUI e formulários: Qt Designer. – Internacionalização – Documentação Prof. Tiago G. S. Carneiro DECOM - UFOP Ferramentas Qt • Qt Designer - Ferrameta visual para projeto e definição de layout de GUI baseada na operação de arrastar-e-soltar • Qt Linguist – Um conjunto de ferramentas que permitem a rápida tradução de aplicações Qt • Qt Assistant – Ferramenta configurável e distribuível para construção de sistemas de ajuda e documentação • qmake – Uma gerador de makefile multi-plataforma Prof. Tiago G. S. Carneiro DECOM - UFOP 2 Prof. Tiago G. S. Carneiro DECOM - UFOP Prof. Tiago G. S. Carneiro DECOM - UFOP 3 Prof. Tiago G. S. Carneiro DECOM - UFOP Prof. Tiago G. S. Carneiro DECOM - UFOP 4 Arquitetura da biblioteca Qt Qt define suas próprias widgets, não utiliza widgets dependentes de plataforma como, por exemplo, MFC (Microsoft Foundation Classes). Prof. Tiago G. S. Carneiro DECOM - UFOP Prof. Tiago G. S. Carneiro DECOM - UFOP 5 Prof. Tiago G. S. Carneiro DECOM - UFOP Prof. Tiago G. S. Carneiro DECOM - UFOP 6 Prof. Tiago G. S. Carneiro DECOM - UFOP Prof. Tiago G. S. Carneiro DECOM - UFOP 7 Como o Qt funciona? • O mecanismo “Signals & Slots” é a principal conceito de Qt. – Fortemente tipado – Fracamente acoplado • Ele substitui o mecanismo de “callback”. – – – – Fracamente tipado Fortemente acoplado Uso de ponteiro para funções (C++) Tendencioso a erros Prof. Tiago G. S. Carneiro DECOM - UFOP Mecanismo de CallBack 1º. Passo Proximos passos... Aplicação Programa Principal call Funções CallBack Biblioteca Aplicação Programa Principal Funções CallBack Biblioteca call Programa Principal Função de Registro Programa Principal Função de Registro Uma função callback é um código passado como parâmetro para outro código. Assim, a camada de software de nível mais baixo pode invocar funções de nível mais alto. ... quickSort( dataStructure, compara(a,b)); ... Prof. Tiago G. S. Carneiro DECOM - UFOP 8 Signals & Slots • Signals são métodos de classes que sinalizam a mudança do estado interno de um objeto. • Slots são métodos de classes que são disparados quando um signal é emitido. Prof. Tiago G. S. Carneiro DECOM - UFOP Signals & Slots • Signals e Slots implementam um mecanismo de comunicação entre objetos ou widgets. Prof. Tiago G. S. Carneiro DECOM - UFOP 9 Signal & Slot • Um signal pode ser conectado a quantos slots forem necessários e vice-versa Prof. Tiago G. S. Carneiro DECOM - UFOP Signals & Slots class BankAccount : public QObject { Q_OBJECT public: BankAccount() { curBalance = 0; } int balance() const { return curBalance; } public slots: void setBalance(int newBalance); signals: void balanceChanged(int newBalance); private: void BankAccount::setBalance(int newBalance) int currentBalance; { }; if (newBalance != currentBalance) { currentBalance = newBalance; emit balanceChanged(currentBalance); Programa Principal } BankAccount x, y; } connect(&x, SIGNAL(balanceChanged(int)), &y, SLOT(setBalance(int))); x.setBalance(2450); Meta Objeto Prof. Tiago G. S. Carneiro DECOM - UFOP 10 Meta-Object Compiler (moc) Meta Objeto MyClass.h Objeto C++ MOC moc_MyClass.cpp Ligador C++ MyClass.cpp Compilador C++ moc_MyClass.o MyClass.exe • O compilador moc não implementa toda a linguagem C++. • O principal problema é que classes templatadas não podem ter sgnals e slots. • Mais limitações em C:/Qt/4.2.2/doc/html/moc.html#moc Prof. Tiago G. S. Carneiro DECOM - UFOP 11