Documente Academic
Documente Profesional
Documente Cultură
Conceitos bsicos de UI em Qt
Roteiro
Tipos de Dados e Strings Elementos bsicos de UI em Qt Aes em Qt Eventos em Qt
Qt Bsico
Tipos de Dados
Antes de tudo
Qt type qint8 qint16 qint32 qint64 qreal uchar / quint8 ushort / quint16 uint/ quint32 ulong qulonglong/ quint64 typedef de Signed char Signed short Signed int long long int Double / float (ARM) Unsigned char Unsigned short unsigned int unsigned long unsigned long long int 0 at 255 0 at 65535 0 at 4294967296 0 at 4294967296 unsigned 64 bit
Qt Bsico
QString
Semelhante as strings C++ padro Qt sempre utiliza codificao Unicode (16 bit) Qt faz uso de compartilhamento implcito de strings para aumentar a eficincia e reduzir a sobrecarga de memria Quando for armazenar dados (bytes) ou strings 8bit terminadas em \0, utilize: QByteArray
Qt Bsico
Compartilhamento Implcito
Funciona transparentemente
Apenas ponteiro para dados passado Dados apenas copiados se uma funo escreve nele
QString str1 = Hello World; QString str2 = str1; str2.replace(world, class);
str1
Hello World
referncias 1
str1 str2
Hello World
referncias 2
str1
Hello World
referncias 1
str2
Hello Class
referncias 1
Qt Bsico
QVariant
Guarda um tipo de dado Utilizado para converso entre tipos
QDataStreamout(...); Qvariant v(10); int x = v.toInt(); out << v; v = QVariant("hello"); v = QVariant(tr("hello")); int y = v.toInt(); Qstring s = v.toString(); out << v; [...]
// // // // // // // //
The variant now contains an int x = 10 Writes a type tag and an int to out The variant now contains a QByteArray The variant now contains a QString y = 0 s = tr("hello") Writes a type tag and a Qstring to out
Qt Bsico
Qt Bsico
Hands-on!
Qt Bsico
Exerccios
Criar um widget com um boto e um label.
Quando o boto for apertado o texto do label ser alterado!
Dialogs
O que ?
Uma janela de alto nvel, geralmente utilizada para tarefas curtas, como um informativo, por exemplo. Pode retornar um valor.
Modal
Bloqueia outras janelas (dialog de escolha de arquivos, por exemplo) Geralmente executado com um exec(), e s retorna quando a janela fechada Se executado via show(), retorna imediatamente Resultado atravs de sinais
Modeless
Funciona independentemente de outras janelas Sempre retorna imediatamente. Funciona com o show()
Qt Bsico
11
Qt Bsico
12
Cdigo
#include "mydialog.h #ifndefMYDIALOG_H #defineMYDIALOG_H #include #include #include #include <QDialog> <QPushButton> <QVBoxLayout> <QLabel> MyDialog::MyDialog() { setFixedSize(200, 100); QVBoxLayout* vbox= newQVBoxLayout(); QLabel* label = newQLabel(Qual a sua escolha?); QPushButton* okButton= newQPushButton("Ok"); QPushButton* cancelButton= newQPushButton("Cancelar"); // Set the ok button as default okButton->setDefault(true); vbox->addWidget(label); vbox->addWidget(okButton); vbox->addWidget(cancelButton); setLayout(vbox); connect(okButton, SIGNAL(clicked()), this, SLOT(accept())); connect(cancelButton, SIGNAL(clicked()), this, SLOT(reject())); }
Qt Bsico
13
Qt Bsico
14
Dialog de erro:
QErrorMessage
Dialog de Mensagem
QMessageBox
Main Window
A classe QMainWindow prov um layout pre-definido para janelas de aplicaes
O Widget principal deve ser definido, os outros so opcionais Voc pode extend-lo para sua aplicao
Exerccio
Crie sua prpria MyMainWindow
Como Widget central utilize um QTextEdit Utilize o metdo setCentralWidget() no construtor do MainWindow.
Qt Bsico
17
Ao (Action)
Representa uma ao do usurio (UI) Definidos uma vez e utilizados em diversos locais So inseridos em widgets
Menus Toolbars Atalhos de teclados
Qt Bsico
18
Barra de Menu
QMenu uma widget base para barras de menu QMenuBar automaticamente criado pelo QMainWindow Um Qmenu contm vrios itens de menu
Estes itens de menua lanam Aes
Qt Bsico
19
Exemplo de QAction
Vamos utilizar a barra de menu do exemplo anterior:
Crie uma ao para abrir arquivos
acaoAbrir = new QAction(&Abrir, this);
Eventos (Events)
Aplicaes em Qt so baseadas em Eventos Eventos so gerados em resposta a aes do usurio
Apertar de uma tecla, eventos de toque, etc..
Qt Bsico
21
Eventos e Sinais
Sinais (Signals)
So usados em widgets O Widget lana um sinal clicked() e no um evento de apertar de teclas
Eventos
So usados para implementar widgets O widget recebe o evento de apertar tecla enter, e lana um sinal de clicked()
Boto do mouse liberado OS QApplication::exec() (loop de eventos) QEvent SIGNAL clicked()
QPushButton::event()
Qt Bsico
22
QEvent
Existem vrios tipos de Eventos
Utilize QEvent::type() para avaliar o tipo
Qt Bsico
24
Sobrecarregue esse mtodos, veja documentao para mais mtodos que lidam com eventos
Qt Bsico 25
Exerccio
Qt Bsico
26
Qt Bsico
27