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