minicurso qt - usp - liveblue.files.wordpress.com · minicurso qt - usp objetivos: he has the...
TRANSCRIPT
![Page 1: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/1.jpg)
Minicurso Qt - USP( Ou a construção do Caos)
![Page 2: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/2.jpg)
Minicurso Qt - USP
![Page 3: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/3.jpg)
Minicurso Qt - USPPorque Qt?
- C++ / Orientação a Objetos- Moc- Sinais / Slots- Genealogia- Widgets- Threads- Multimedia- XML- Banco de Dados- Animações- Multiplataforma- Leve- i18n, l10n. ( seja lá o que isso quer dizer )- Programação Concorrente- Sockets
![Page 4: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/4.jpg)
Minicurso Qt - USP
Pré Requisitos:
Orientação a Objetos( Seja Java, Python, Ruby ou whattahell )
Vontade de aprender
Desejavel:
Conhecimentos em C++
![Page 5: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/5.jpg)
Minicurso Qt - USPObjetivos:
He Has the technology, He can make you Better, Faster, Stronger.
- Introduzir o Qt de forma Prática
- Iniciar uma vivência em Grupo
- Discutir Relações de Projeto
- Distribuir Balinhas de Banana
![Page 6: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/6.jpg)
Minicurso Qt - USPMétodologia:
- Aula Prática com intervenções artisticas.- Meia hora de Aula para Meia hora de
Implementação.- Xp Programming - 2 alunos por computador
Referências:- Qt Quaterly- Qt Documentation- api.kde.org- labs.trolltech.com- Qt Center
![Page 7: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/7.jpg)
Minicurso Qt - USP
C++ ( ou o testamento da ira)
![Page 8: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/8.jpg)
Minicurso Qt - USP
C++:Baixo nivelAlto nivelFlexivelCódigo GenéricoOrientada a ObjetosEstruturadaconst char *const a()
![Page 9: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/9.jpg)
Minicurso Qt - USPconst não é Constante.
const é Muita coisa:
const int a = 10;
const char *const b = "waha";
int Classe::blah() const;
const int *const Classe::bleh() const;
![Page 10: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/10.jpg)
Minicurso Qt - USP
const é 'somente leitura'
const int a = 10;
Valendo 1 bala.
![Page 11: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/11.jpg)
Minicurso Qt - USP
const é não - modificavel.int const* a;
const é somente-leitura-não-modificavelconst char * const a = "nãomudo."
const método não pode alterar o objeto.void Classe::metodo() const;
![Page 12: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/12.jpg)
Minicurso Qt - USP
Valores · Ponteiros · Referencias
int a; ← valorint *b; ← ponteiroint &c; ← referencia
Diferenças? ( Balinhas )
![Page 13: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/13.jpg)
Minicurso Qt - USP
class A {public:
A(); ← ConstrutorA(const A& a); ← Balinha~A(); ← Destrutor
}; ← Sim, ponto - e - virgula.
![Page 14: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/14.jpg)
Minicurso Qt - USP
class A{virtual void blah() = 0;virtual void bleh();bool geh() const;
};
![Page 15: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/15.jpg)
Minicurso Qt - USP
C++ NÃO é Compativel com C.
Válido em C, Inválido em C++
void a(void){int new = 2;
}
exemplos no quadro, Valendo Balinha.
![Page 16: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/16.jpg)
C++ NÃO é OO
Chocante, não?
- Linguagem Genérica- Caracteristicas OO- Caracteristicas Estruturada- Caracteristicas Funcionais- Caracteristicas OE
![Page 17: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/17.jpg)
#include <cstring>#include <cstdio>
int main(){ char *letras =(char*) "salvesalvesimpatia"; if (strlen(letras) < -1){ printf("Pois é..."); } return 0;}
Brincadeira do C - Do - Mal
![Page 18: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/18.jpg)
Brincadeira do C - Do - Mal
size_t strlen( const char* c);typedef unsigned int size_t;
-1 não é unsigned.size_t é.
Qual o problema?
![Page 19: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/19.jpg)
Minicurso Qt - USP
Pequena História do Qt
4.0 - 2005 - Tulip- Arthur- ItemView- Scribe- MainWindow
4.1 - 2005- svg- pdf
![Page 20: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/20.jpg)
Minicurso Qt - USP
4.2 - 2006
- Windows Vista- CSS- QGraphicsView
4.3 - 2007
- Melhorias no Vista- Melhorias no SVG- Pdf Print- QScript
![Page 21: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/21.jpg)
Minicurso Qt - USP
4.4 - 2008
- Phonon- XML Aperfeiçoado- QtConcurrent- WebKit- IPC para Threads
4.5 - 2009
- Qt Creator- QGraphicsView++- WebKit++- OpenDocument
![Page 22: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/22.jpg)
Minicurso Qt - USP
4.6 - 2009
- Animações- Gestures- Multi-Touch- Performance++
4.7 - 2010*
- QML- Kinetic
![Page 23: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/23.jpg)
Minicurso Qt - USP
![Page 24: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/24.jpg)
Minicurso Qt - USP
![Page 25: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/25.jpg)
Minicurso Qt - USP
![Page 26: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/26.jpg)
Minicurso Qt - USP
![Page 27: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/27.jpg)
Minicurso Qt - USP
![Page 28: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/28.jpg)
Minicurso Qt - USP
![Page 29: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/29.jpg)
Minicurso Qt - USP
![Page 30: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/30.jpg)
Visão Geral - Qt
Sinais - Slots - Containers - Meta - Objetos - CSS - Scripting - Multimídia - SVG - Bindings Para outras Linguagens - Qwt - Qanava - Wt ( ... )
![Page 31: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/31.jpg)
História
Primeira versão em 1995, por Haavard Nord e Eirik Chambe-Eng;
Iniciou em 1991 e em 1993 já existia um núcleo que suportava widgets;
A letra 'Q' foi escolhida porque era bonita no editor do Haavard;
O “t” vem da palavra toolkit; Em 1994 foi fundada a Trolltech, antes Troll Tech
e ainda antes Quasar Technologies;
![Page 32: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/32.jpg)
Em 1996 foi lançado o Qt 1.1 e a Trolltech tinha 8 clientes;
Também em 1996 o projeto KDE foi fundado por Matthias Ettrich;
O 'K' (do KDE) era simplesmente a letra que vinha antes do 'L';
Em 1997 o Qt passa a ser utilizado no KDE e a versão 1.3 é lançada;
Em 1999, o Qt 2 passa a ser licenciado pela QPL;
História
![Page 33: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/33.jpg)
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.
História
![Page 34: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/34.jpg)
Hello, Qt
#include <QApplication>#include <QLabel>
int main(int argc, char *argv[]){QApplication app(argc, argv);QLabel l("Oi Mundo");l.show();return app.exec();
}
Para executar:
qmake --projectqmakemake
![Page 35: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/35.jpg)
QMake?
Ferramenta de Gerenciamento da Compilação
Cria e Altera arquivos de Projetos, e manipula Makefiles.
Arquivos .pro devem ser editados manualmente as vezes.
![Page 36: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/36.jpg)
Arquivo de Projeto?
######################################################### Automatically generated by qmake (2.01a) Sat Mar 6 16:50:32 2010########################################################
TEMPLATE = appTARGET = DEPENDPATH += .INCLUDEPATH += .
# InputSOURCES += main.cpp
![Page 37: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/37.jpg)
Sobre o Hello Qt
QApplication:
Controla a camada de eventos, sinais e conexões do Qt.
QLabel:
Um Widget que exibe um texto na tela.
![Page 38: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/38.jpg)
Sinais / Slots : Comunicação entre objetosProperties : Atributos DinâmicosMeta-Objects: Informação de Tipo Eventos e FiltrosTraduções Contextuais.
Modelo de Objetos
![Page 39: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/39.jpg)
Sinais e Slots
- Forma padrão de Comunicação- Só são processados a partir do exec()- Um sinal é uma mensagem enviada.- Um slot é o que fazer quando receber a mensagem.
![Page 40: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/40.jpg)
Conectando Sinais e Slots
#include <QMainWindow>#include <QLabel>#include <QSpinBox>
class Janela : public QMainWindow{Q_OBJECTpublic:
Janela();private:
QLabel m_texto;QSpinBox m_spin;
};
![Page 41: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/41.jpg)
Conectando Sinais e Slots
Janela::Janela() : QMainWindow(){m_texto = new QLabel("");m_spin = new QSpinBox();
connect(m_spin, SIGNAL(valueChanged(QString)),m_texto, SLOT(setText(QString)));
QWidget *centralWidget = new QWidget(this); QHBoxLayout *l = new QHBoxLayout(); l->addWidget(m_texto); l->addWidget(m_spin); centralWidget->setLayout(l); setCentralWidget(centralWidget);}
![Page 42: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/42.jpg)
Sinais
Podem se conectar a vários SlotsPodem se conectar a vários Sinais
connect( m_c1, SIGNAL(triggered()), m_c2connect( m_c1, SIGNAL(triggered()), m_c3connect( m_c1, SIGNAL(triggered()), m_c4
Qual o problema disso? ( Balinha )
![Page 43: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/43.jpg)
Sinais - Sinais
m_b1 = new QPushButton(this);m_b2 = new QPushButton(this);
connect(m_b1, SIGNAL(clicked()), m_b2, SIGNAL(clicked()));
connect(m_b1, SIGNAL(hovered()), m_b2, SIGNAL(hovered()));
connect(m_b1, SIGNAL(activated()), m_b2, SIGNAL(activated()));
![Page 44: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/44.jpg)
Slots - Slots ?
connect(m_b1, SLOT(clicked()), m_b2, SLOT(clicked()));
connect(m_b1, SLOT(hovered()), m_b2, SLOT(hovered()));
connect(m_b1, SLOT(activated()), m_b2, SLOT(activated()));
![Page 45: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/45.jpg)
connect(m_b1, SLOT(clicked()), m_b2, SLOT(clicked()));
connect(m_b1, SLOT(hovered()), m_b2, SLOT(hovered()));
connect(m_b1, SLOT(activated()), m_b2, SLOT(activated()));
Slots - Slots ?
![Page 46: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/46.jpg)
Declarando SIGNALS
class MeuQObject : public QObject{Q_OBJECTpublic:
MeuQObject();signals: ← HÁ!
void meuSinalFofo();void pos3d(int x, int y, int x);void pos2d(int x, int y);
};
![Page 47: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/47.jpg)
Declarando Sinais
NÃO! NÃO! NÃO! NÃO!
void Classe::meuSinalFofo(){...
}void Classe::pos2d(int x, int y){
...}
![Page 48: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/48.jpg)
Como isso funciona?
![Page 49: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/49.jpg)
Usando seus Sinais
void Classe::mouseClick2d(mouse s){QPointF f = s.pos();if ( f.x() < 0 || f.x > screen().size()){
return;}
emit pos2d(f.x(), f.y());}
![Page 50: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/50.jpg)
Criando seus Slots
Class MainWindow::QMainWindow{Q_OBJECTpublic:
MainWindow();
private slots:void setPonto2d(int x, int y);void setX(int x);void setY(int y);
}
![Page 51: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/51.jpg)
Criando seus Slots
void MainWindow::setPonto2d(int x, int y){setX(x);setY(y);
}
void MainWindow::setX(int x){ m_x = x; }
void MainWindow::setY(int y){ m_y = y; }
![Page 52: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/52.jpg)
Seus Sinais + Seus Slots
MainWindow::MainWindow(){MeuQObject *o = new MeuQObject();connect(o, SIGNAL(pos2d(int,int))
this, SLOT(setPos(int,int)));connect(o, SIGNAL(pos2d(int,int)),
this, SLOT(setX(int)));connect(o, SIGNAL(pos2d(int,int)),
this, SLOT(setY(int))); ← BALINHA!}
![Page 53: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/53.jpg)
Calculadora + Designer
![Page 54: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/54.jpg)
Designer
Caixa de Ferramentas
Botões, Caixas,Textos, Layouts,Controles, Radios,etc.
![Page 55: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/55.jpg)
Editor de Propriedades do Objeto
Designer
![Page 56: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/56.jpg)
Voltando a Calculadora
![Page 57: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/57.jpg)
Voltando a Calculadora
![Page 58: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/58.jpg)
Layouts
Organização de Widgets na Tela
- Verticais- Horizontais- Formulários em Colunas- Grade- Expansiveis via Sobrecarga
![Page 59: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/59.jpg)
Layouts
![Page 60: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/60.jpg)
o Calc.ui amava o ui_calc.hque amava o calc.hque amava o calc.cppQue não amava ninguem.e o QWidget segurava vela.
Ciranda
![Page 61: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/61.jpg)
QChar sinal; bool esperandoPorSinal; void calcular(QChar s);
private slots: void numPressed(); void enterPressed(); void clearPressed(); void signalPressed();};
class Calc : public QWidget,public Ui::calc{
Q_OBJECT public: Calc(); private: QString numero; QString memoria;
Calc.h
![Page 62: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/62.jpg)
foreach(QPushButton *b, botoes){ connect(b, SIGNAL(clicked()),
this, SLOT(numPressed())); }
connect(benter, SIGNAL(clicked()),
this, SLOT(enterPressed())); connect(bclear, SIGNAL(clicked()),
this, SLOT(clearPressed()));}
Calc::Calc()
Calc::Calc(){ setupUi(this); numero = "0"; memoria = "0"; lcd->display(numero); QList<QPushButton*> botoes; botoes << b1 << b2 << b3 << b4 << b5 << b6 << b7 << b8 << b9 << b0;
![Page 63: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/63.jpg)
void Calc::clearPressed(){ memoria = '0'; numero = '0'; lcd->display(numero);}
void Calc::signalPressed(){ numero = QString(); QPushButton *b = sender(); sinal = b->text()[0];}
Calc::*Pressed()
void Calc::numPressed(){ QPushButton *b = sender(); numero += b->text(); lcd->display(numero);}
void Calc::enterPressed(){ calcular(sinal); numero = QString();}
![Page 64: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/64.jpg)
Calc::calcular()
void Calc::calcular(QChar s){ qreal n1 = memoria.toDouble(); qreal n2 = numero.toDouble();
switch( s.toAscii() ){ case '+' : n1 += n2; break; case '-' : n1 -= n2; break; case '*' : n1 *= n2; break; case '/' : n1 /= n2; break; } memoria = QString("%1").arg(n1); lcd->display(memoria); }
![Page 65: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/65.jpg)
Sinais - Slots
![Page 66: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/66.jpg)
QLayouts - De novo =)
![Page 67: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/67.jpg)
#include <QWidget>#include <QApplication>#include <QList>#include <QPushButton>#include <QVBoxLayout>#include <QHBoxLayout>
int main(int argc, char *argv[]){QApplication app(argc, argv);
QWidget *janela = new QWidget();QVBoxLayout *layout1 = new QVBoxLayout();QVBoxLayout *layout2 = new QVBoxLayout();QHBoxLayout *layoutCentral = new QHBoxLayout();
for(int i = 0; i < 10; i++){QPushButton *b = new QPushButton(janela);b->setText(QString("Botao n%1").arg(i));if (i%2){
layout1->addWidget(b);}else{
layout2->addWidget(b);}
}layoutCentral->addLayout(layout1);layoutCentral->addLayout(layout2);janela->setLayout(layoutCentral);janela->show();return app.exec();
}
![Page 68: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/68.jpg)
Parentesco
Widgets tem Pais.O Pai de Todos tem parent() == 0
Widgets mortos, Matam os filhos junto.
Propagam Eventos pela arvore de parentesco.
![Page 69: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/69.jpg)
Parentesco
![Page 70: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/70.jpg)
Manipulador de Imagens
![Page 71: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/71.jpg)
Manipulador de Imagens
class JPrincipal : public QWidgetprivates: void adicao() void subtracao() void negativa() void threshould() void tonsDeCinza() void historigrama()
![Page 72: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/72.jpg)
Class JPrincipal : Membros
private: QLabel *m_image; QSlider *m_red; QSlider *m_green; QSlider *m_blue; QComboBox *m_opcoes;
![Page 73: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/73.jpg)
QSlider
Seleção de Valores em uma faixa
sinais:valueChanged()sliderPressed()sliderMoved()sliderReleased()
![Page 74: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/74.jpg)
QLabel
Guarda TextoGuarda ImagemGuarda Animação
Ultra - Versátil =)
![Page 75: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/75.jpg)
QComboBox
Valores em Drop - DownAceita modelsAceita listasAceita adição - na - mão.
![Page 76: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/76.jpg)
Construtor
m_red = new QSlider(Qt::Horizontal, this);
m_red ->setRange(0, 255);
m_image = new QLabel("Imagem Aqui", this);
m_opcoes = new QComboBox(this);
m_opcoes->addItem(tr("Adicao"));
QHBoxLayout *h = new QHBoxLayout();
h->addWidget(m_red);
![Page 77: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/77.jpg)
Construtor
QVBoxLayout *v = new QVBoxLayout(this);v->addWidget(m_image);v->addWidget(m_opcoes);v->addLayout(h);
connect(m_opcoes, SIGNAL(currentIndexChanged(QString)), this, SLOT(executeAlgorithm(QString)));
connect(m_red, SIGNAL(sliderReleased()), this, SLOT(intCanais()));
![Page 78: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/78.jpg)
executeAlgorithm
void JPrincipal::executeAlgorithm(const QString &s){ /* */if ( s == "Adicao") adicao (); else if ( s == "Subtracao") subtracao (); else if ( s == "Negativa") negativa (); else if ( s == "Threshould") threshould (); else if ( s == "TonsDeCinza") tonsDeCinza (); else if ( s == "Historigrama") historigrama ();}
![Page 79: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/79.jpg)
void JPrincipal::tonsDeCinza(){ QPixmap p("imagem.jpg"); QImage i = p.toImage().scaled(QSize(800,600)); for( int row = 0; row < i.width(); ++row){ for( int column = 0; column < i.height(); ++ column){ QColor pixel = i.pixel(row, column); uint total = (pixel.red() *0.299f) + (pixel.green() * 0.587f) + (pixel.blue() * 0.114f); QColor c(total, total, total); i.setPixel(row, column, c.rgb() ); } }
p = p.fromImage(i); m_image->setPixmap(p); }
Tons de Cinza
![Page 80: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/80.jpg)
Limiar
void JPrincipal::threshould(){ QPixmap p("/home/tomaz/Multimedia/Fotos/Bella/bella.jpg"); QImage i = p.toImage().scaled(QSize(800,600)); for( int row = 0; row < i.width(); ++row){ for( int column = 0; column < i.height(); ++ column){ QColor c = i.pixel(row, column); qreal limiar = c.blueF() + c.redF() + c.greenF();; i.setPixel(row, column, (limiar > 2.5f) ? 0xFFFFFF : 0x0); } } p = p.fromImage(i); m_image->setPixmap(p);}
![Page 81: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/81.jpg)
Negativa
void JPrincipal::negativa(){ QPixmap p("foto.jpg"); QImage i = p.toImage().scaled(QSize(800,600)); for( int row = 0; row < i.width(); ++row){ for( int column = 0; column < i.height(); ++ column){ QColor c = i.pixel(row, column); c = QColor(255-c.red(), 255-c.green(), 255-c.blue()); i.setPixel(row, column, c.rgb()); } } p = p.fromImage(i); m_image->setPixmap(p);}
![Page 82: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/82.jpg)
Resultado
![Page 83: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/83.jpg)
QPixmap
Otimizada para representar ImagensPode ser usada em QLabel, QPushButtonCompartilhamento Implicito de dadosCarregado de um QImage
![Page 84: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/84.jpg)
QImage
Manipulação de BitsPode ser usado com painterexecução supimpa em acesso de bitsthread safe =D
![Page 85: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/85.jpg)
QColor
Representa uma cor
![Page 86: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/86.jpg)
Widgets que Não Existem?
void JPrincipal::historigrama(){ QPixmap p("fotos.jpg");
THistorigram *t = new THistorigram(p);
t->resize(255,255); t->show();
p = p.fromImage(i); m_image->setPixmap(p);}
![Page 87: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/87.jpg)
THistorigram::THistorigram(QPixmap p, QWidget *parent) : QWidget(parent){ m_r.resize(255); m_g.resize(255); m_b.resize(255); QImage i = p.toImage().scaled(QSize(800,600)); for( int row = 0; row < i.width(); ++row){
for( int column = 0; column < i.height(); ++ column){ QColor c = i.pixel(row, column); if (c.red() != 0){ m_r[c.red()-1 ] += 1; } if (c.green() != 0){ m_g[c.green()-1] += 1; } if (c.blue() != 0){ m_b[c.blue()-1 ] += 1; } } }
setBackgroundRole(QPalette::Base); setAutoFillBackground(true);}
thistorigram.h
![Page 88: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/88.jpg)
QSize THistorigram::minimumSizeHint() const{ return QSize(255, 255); }QSize THistorigram::sizeHint() const{ return QSize(255, 255); }
void THistorigram::paintEvent ( QPaintEvent * /*event*/ ){ QPainter p(this); QLine line;
int max = 0; p.setPen(Qt::red); drawLines(p, max, m_r); p.setPen(Qt::green);drawLines(p, max, m_g); p.setPen(Qt::blue); drawLines(p, max, m_b); if (height() != max){ resize(255, max); } }
Historigrama =D
![Page 89: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/89.jpg)
drawLines
void THistorigram::drawLines(QPainter &p, int& max, QVector<int>& vetor){ for(int i = 0; i < 250; ++i){ int p1 = vetor[i]/10; int p2 = vetor[i+1]/10; if (p1 > max) max = p1; if (p2 > max) max = p2; p.drawLine(i, p1, i+1, p2); }}
![Page 90: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/90.jpg)
ResultadoQPainter
pintura low levelQPen
cor, estilo e espessura da linhaQBrush
balinha.
sizeHintminimumSizeHint
![Page 91: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/91.jpg)
Pai de Todos - QMainWindow
QMenuBar- Menus de Opções
QToolBar- Icones de Opções
QDockWidget- Caixas flutuantes
QStatusBar- Status do aplicativo
QWidget- Centro do programa
![Page 92: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/92.jpg)
QMenuBar
Relacionados:QMenuQAction
Container de MenusCada Menu Guarda MenusCada Menu Guarda QActionsCada Menu Guarda Separadores
![Page 93: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/93.jpg)
QToolBar
Relacionados:QAction
Cada QToolBar contem n QActionsCada QToolBar é MóvelCada QToolBar pode ser EscondidaCada QToolBar pode escolher onde ficar
![Page 94: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/94.jpg)
QActions?
Sim.
Consistência entre Menu e ToolbarQuando ativado, triggered();Imagem, Tooltip, Texto, Formato, etc.
Diga não a Duplicação de código com QAction.
![Page 95: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/95.jpg)
Escrevendo Feliz
![Page 96: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/96.jpg)
Escrevendo Feliz
#include <QApplication>#include "dfeliz.h"int main(int argc, char *argv[]){
QApplication app(argc, argv);DFeliz janela;janela.show();return app.exec()
}
![Page 97: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/97.jpg)
Escrevendo Feliz - QActions
void DFeliz::setupActions(){ m_save = new QAction("Save", this); m_save->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_S)); connect(m_save, SIGNAL(triggered()), this, SLOT(save_file())); m_new = new QAction("New", this); m_new->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_N)); connect(m_new, SIGNAL(triggered()), this, SLOT(new_file()));}
![Page 98: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/98.jpg)
Escrevendo Feliz - Menus
void DFeliz::setupUi(){ QMenuBar *m = menuBar(); QMenu *fileMenu = m->addMenu(tr("&File")); fileMenu->addAction(m_new); fileMenu->addAction(m_save);
QToolBar *toolBar = addToolBar(tr("Principal")); toolBar->addAction(m_new); toolBar->addAction(m_save);}
![Page 99: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/99.jpg)
Salvando o Arquivo
void DFeliz::save_file(){ m_file = QFileDialog::getSaveFileName (); if ( m_file.isEmpty() ) return; QFile file(m_file); if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) return;
QTextStream out(&file); out << m_textEdit->toPlainText(); file.close();}
![Page 100: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/100.jpg)
class DFeliz : public QMainWindow {Q_OBJECTpublic: DFeliz();private: QAction *m_new; QAction *m_save; QAction *m_cut; QAction *m_paste; QTextEdit *m_textEdit; QString m_file;private slots: void new_file(); void save_file();};
Classinteira ;)
![Page 101: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/101.jpg)
Implementem o resto
cut, copy, paste, e abrir arquivo.
vamos. Enquanto isso eu ando de um lado pra o outro e ignorando pedidos de ajuda por uns 5 minutos.
![Page 102: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/102.jpg)
QThread
Threads MultiplataformaPThreads no LinuxWindows::Threads no Windows
Gerenciamento de Sinais / Slots
QObjects? NahQWidgets? Nah
![Page 103: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/103.jpg)
Exemplo de Threads
class MainWindow : public QMainWindow{Q_OBJECT
public: MainWindow(QWidget *parent = 0); private: ThreadReader* grupo1; ThreadCreator* grupo2; QStringList bagOfTasks; QMutex read; QMutex write;};
![Page 104: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/104.jpg)
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){ QHBoxLayout *l = new QHBoxLayout(); QTextEdit *e; for (int i = 0; i < 5; i++){ e = new QTextEdit(this); l->addWidget(e); grupo1 = new ThreadReader(bagOfTasks, read); grupo2 = new ThreadCreator(bagOfTasks, i, write); connect(grupo1, SIGNAL(sendMessage(const QString&)),
e, SLOT(append(const QString&))); grupo2->start(); grupo1->start(); }
QWidget *centralWidget = new QWidget(this); setCentralWidget(centralWidget); centralWidget->setLayout(l); }
MainWindow
![Page 105: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/105.jpg)
void ThreadCreator::update(){ if (_bag.size() >= 20) return; _mutex.lock(); QString conteudo; for(int i = 0; i < 4; i++) conteudo += QChar(rand()%65 + 32); _bag << QString("Thread %1 \t %2 \t %3 ") .arg(_number) .arg(conteudo) .arg(_total++); _mutex.unlock(); }
Thread::Criador
![Page 106: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/106.jpg)
void ThreadCreator::run(){ QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()),
this, SLOT(update())); timer->start(250); exec();}
Thread::Criador
![Page 107: Minicurso Qt - USP - liveblue.files.wordpress.com · Minicurso Qt - USP Objetivos: He Has the technology, He can make you Better, Faster, Stronger. - Introduzir o Qt de forma Prática](https://reader030.vdocuments.com.br/reader030/viewer/2022021712/5b5f1a187f8b9a415d8db504/html5/thumbnails/107.jpg)
void ThreadReader::update(){ if (_bag.empty()) return; _mutex.lock(); emit sendMessage(_bag.takeFirst()); _mutex.unlock();}
Thread::Leitor