1. O documento apresenta uma introdução sobre Qt, incluindo o que é Qt, como começar a programar com Qt e o futuro de Qt.
2. É apresentado um exemplo "Hello World" em Qt usando widgets básicos como QLabel.
3. Um segundo exemplo mostra como conectar sinais e slots em Qt para criar uma janela com um botão que fecha a aplicação.
Desenvolvimento orientado a objetos com C++ e QT4 - Henrique Marks
1. O que é Qt ?
Como começar?
Programando
Futuro...
Desenvolvimento orientado a objetos com C++ e
Qt4
Dr. Henrique Marks
November 8, 2008
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
2. O que é Qt ?
Como começar?
Programando
Futuro...
Sumário
1 O que é Qt ?
2 Como começar?
3 Programando
4 Futuro...
Nível Intermediário
Programação visual, orientada a objetos, C++ e Qt
Pré-requisitos: Um pouco de C++.
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
3. O que é Qt ?
Como começar?
Programando
Futuro...
Biblioteca de Classes
Totalmente orientada a objetos
Multi-plataforma
Classes visuais cobrindo múltiplas necessidades
Classes-extra, de uso geral
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
4. O que é Qt ?
Como começar?
Programando
Futuro...
Utilização
Criação de aplicativos para o Desktop
Criação de aplicativos embarcados
Criação de aplicativos para o shell (!)
Exemplos de Uso: KDE, Lyx, Skype, ...
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
5. O que é Qt ?
Como começar?
Programando
Futuro...
Utilização
Criação de aplicativos para o Desktop
Criação de aplicativos embarcados
Criação de aplicativos para o shell (!)
Exemplos de Uso: KDE, Lyx, Skype, ...
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
6. O que é Qt ?
Como começar?
Programando
Futuro...
Instalação
Denition
Método Fácil
Instale Linux
Usando o instalador de programas, instale todos os pacotes
com qt4
Não esqueça do compilador (g++) e do make
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
7. O que é Qt ?
Como começar?
Programando
Futuro...
Instalação
Denition
Método menos fácil
Vá no site da Trolltech: www.trolltech.com
Baixe o que for necessário
Não esqueça de baixar a versão com mingw, e seguir as
instruções corretamente
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
8. O que é Qt ?
Como começar?
Programando
Futuro...
Ambiente de Desenvolvimento
Vamos escrever o código num editor de textos simples
Vamos compilar o código no terminal
Cada programa DEVE ser colocado numa pasta separada dos
demais
Um programa pode (e será) composto de vários arquivos
Denition
Vantagem deste método
É rápido, é eciente, é simples
Sem as complexidades de um IDE
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
9. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 1
Example
Hello World
#include QApplication
#include QLabel
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QLabel *label = new QLabel(Hello Qt!);
label-show();
return app.exec();
}
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
10. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 1
Denition
Entendendo o Código
#include QApplication
#include QLabel
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Arquivos de cabeçalho, função main, e criação do Objeto app,
do tipo QApplication
Sempre igual, em todos os programas
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
11. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 1
Denition
Entendendo o Código
#include QApplication
#include QLabel
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Arquivos de cabeçalho, função main, e criação do Objeto app,
do tipo QApplication
Sempre igual, em todos os programas
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
12. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 1
Denition
Entendendo o Código
QLabel *label = new QLabel(Hello Qt!);
label-show();
Criamos um objeto (ponteiro) label, do tipo QLabel.
Chamamos a construtora do objeto, passando a string
(QString) Hello Qt!
Mostramos o QWidget no programa.
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
13. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 1
Denition
Entendendo o Código
QLabel *label = new QLabel(Hello Qt!);
label-show();
Criamos um objeto (ponteiro) label, do tipo QLabel.
Chamamos a construtora do objeto, passando a string
(QString) Hello Qt!
Mostramos o QWidget no programa.
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
14. O que é Qt ?
Como começar?
Programando
Futuro...
Compilando e rodando
Crie a pasta prog1, salve o arquivo ali como ex1.cpp
Pelo terminal, entre na pasta e rode os comandos
qmake-qt4 -project
qmake-qt4
make
O primeiro comando cria um arquivo de projeto (.pro)
O segundo cria um Makele, com instruções de compilação
O terceiro compila, linka, etc, seguindo as instruções do
makele
Rode o executável (clique no arquivo prog1 que está nesta
pasta)
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
15. O que é Qt ?
Como começar?
Programando
Futuro...
Programa rodando
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
16. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 2
Example
Fazendo conexões
QApplication app(argc, argv);
QWidget window;
window.resize(200, 120);
QPushButton quit(Quit, window);
quit.setFont(QFont(Times, 18, QFont::Bold));
quit.setGeometry(10, 40, 180, 40);
QObject::connect(quit, SIGNAL(clicked()),
app, SLOT(quit()));
window.show();
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
17. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 2
Denition
Entendendo o Código
QWidget window;
window.resize(200, 120);
Criamos o objeto window, do tipo QWidget
Chamamos a função resize para este objeto
QWidget é uma classe muito importante na hierarquia de
classes do Qt.
QPushButton herda de Qwidget, ou seja, é uma sub-classe de
QWidget
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
18. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 2
Denition
Entendendo o Código
QWidget window;
window.resize(200, 120);
Criamos o objeto window, do tipo QWidget
Chamamos a função resize para este objeto
QWidget é uma classe muito importante na hierarquia de
classes do Qt.
QPushButton herda de Qwidget, ou seja, é uma sub-classe de
QWidget
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
19. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 2
Denition
Entendendo o Código
QWidget window;
window.resize(200, 120);
Criamos o objeto window, do tipo QWidget
Chamamos a função resize para este objeto
QWidget é uma classe muito importante na hierarquia de
classes do Qt.
QPushButton herda de Qwidget, ou seja, é uma sub-classe de
QWidget
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
20. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 2
Denition
Entendendo o Código
QPushButton quit(Quit, window);
quit.setFont(QFont(Times, 18, QFont::Bold));
quit.setGeometry(10, 40, 180, 40);
Criamos o objeto quit, do tipo QPushButton
Chamamos sua construtora, com dois parâmetros:
Uma QString Quit
O ponteiro para o QWidget que conterá este botão (window)
Uma função do QPushButton para denir a fonte
Uma função do QPushButton para denir a geometria
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
21. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 2
Denition
Entendendo o Código
QPushButton quit(Quit, window);
quit.setFont(QFont(Times, 18, QFont::Bold));
quit.setGeometry(10, 40, 180, 40);
Criamos o objeto quit, do tipo QPushButton
Chamamos sua construtora, com dois parâmetros:
Uma QString Quit
O ponteiro para o QWidget que conterá este botão (window)
Uma função do QPushButton para denir a fonte
Uma função do QPushButton para denir a geometria
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
22. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 2
Denition
Entendendo o código
QObject::connect(quit, SIGNAL(clicked()),
app, SLOT(quit()));
window.show();
Mecanismo Signal - Slot do Qt
Quando o botão quit for clicado, será chamada a função quit
do objeto app
Sinais: clicked, drag, drop, release, etc.
Slots: Nossas Funções (o nosso código!!!)
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
23. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 2
Denition
Entendendo o código
QObject::connect(quit, SIGNAL(clicked()),
app, SLOT(quit()));
window.show();
Mecanismo Signal - Slot do Qt
Quando o botão quit for clicado, será chamada a função quit
do objeto app
Sinais: clicked, drag, drop, release, etc.
Slots: Nossas Funções (o nosso código!!!)
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
24. O que é Qt ?
Como começar?
Programando
Futuro...
Programa Rodando
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
25. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 3
main.cpp
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWindow mainWin;
mainWin.show();
return app.exec();
}
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
26. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 3
mainwindow.h
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow();
private:
QTableWidget *tableWidget;
};
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
27. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 3
mainwindow.cpp
#include mainwindow.h
MainWindow::MainWindow()
{
tableWidget = new QTableWidget(10,20,this);
setCentralWidget(tableWidget);
}
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
28. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 3
Denition
Entendendo o código (main.cpp)
MainWindow mainWin;
mainWin.show();
Criando o objeto mainWin do tipo MainWindow
Chamando a função show deste objeto
Que classe é esta, MainWindow ?
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
29. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 3
Denition
Entendendo o código (main.cpp)
MainWindow mainWin;
mainWin.show();
Criando o objeto mainWin do tipo MainWindow
Chamando a função show deste objeto
Que classe é esta, MainWindow ?
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
30. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 3
Denition
Entendendo o código (main.cpp)
MainWindow mainWin;
mainWin.show();
Criando o objeto mainWin do tipo MainWindow
Chamando a função show deste objeto
Que classe é esta, MainWindow ?
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
31. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 3
Denition
Entendendo o Código (mainwindow.h)
class MainWindow : public QMainWindow {
Q_OBJECT
public: MainWindow();
private: QTableWidget *tableWidget; };
Denição da classe MainWindow, que herda de QMainWindow
A classe contém uma construtora MainWindow()
A classe contém um objeto do tipo QTableWidget
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
32. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 3
Denition
Entendendo o Código (mainwindow.h)
class MainWindow : public QMainWindow {
Q_OBJECT
public: MainWindow();
private: QTableWidget *tableWidget; };
Denição da classe MainWindow, que herda de QMainWindow
A classe contém uma construtora MainWindow()
A classe contém um objeto do tipo QTableWidget
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
33. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 3
Denition
Entendendo o Código (mainwindow.cpp)
#include mainwindow.h
MainWindow::MainWindow() {
tableWidget = new QTableWidget(10,20,this);
setCentralWidget(tableWidget); }
Inclusão da denição
Denição da contrutora:
Criamos um (ponteiro) objeto tableWidget
Chamamos a função que diz que ele é o Widget central
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
34. O que é Qt ?
Como começar?
Programando
Futuro...
Exemplo 3
Denition
Entendendo o Código (mainwindow.cpp)
#include mainwindow.h
MainWindow::MainWindow() {
tableWidget = new QTableWidget(10,20,this);
setCentralWidget(tableWidget); }
Inclusão da denição
Denição da contrutora:
Criamos um (ponteiro) objeto tableWidget
Chamamos a função que diz que ele é o Widget central
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
35. O que é Qt ?
Como começar?
Programando
Futuro...
Programa Rodando
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4
36. O que é Qt ?
Como começar?
Programando
Futuro...
Aprendendo Mais
Vá na página da Trolltech (agora Nokia):
www.trolltech.com
doc.trolltech.com
Vá na minha página
henriquemarks.googlepages.com
Estamos na sétima aula na FACSUL, teremos 12.
Dr. Henrique Marks Desenvolvimento orientado a objetos com C++ e Qt4