THOUSANDS OF FREE BLOGGER TEMPLATES

segunda-feira, 10 de novembro de 2008

INTRODUÇAO AO QT

Começamos a pouco tempo o modulo 8 e a matéria introduzida foi QT.
Qt através da definição da wikipedia é um sistema multi-plataforma para o desenvolvimento de programas de interface gráfica.
Pode ser usado em 2 linguagens java ou c++ o que usamos foi o c++ pois ja tínhamos as bases logo é mais fácil.
a primeira coisa a saber é a forma como compilar o programa pois e completamente diferente de "C".
compilando:

1- criar pasta com nome á escolha que vai ser o nome do programa
2- abrir a consola;
3- digitar os comandos para localizar o ficheiro (ex.: cd/Desktop/pasta)
4- qmake -project
5 - qmake -pasta.pro (neste caso e pasta pois foi o nome dado)
6- make
depois e verificado se o programa tem erros se nao tiver:
7- ./pasta (neste caso e pasta porque foi o nome dado)

Agora que ja sabemos compilar vamos passar á pratica;
Este é um programa feito por mim mesmo na aula; á primeira vista pode parecer muito grande mas até é simples pois baseia-se em copy+paste.
Ele apenas diz os dias da semana e classifica-os de 1 a 5;

#include <QApplication>
#include <QLabel>
#include <QVBoxLayout>
#include <QSpacerItem>
#include <QSpinBox>
#include <QSlider>
#include <QPushButton>
int main(int argc, char *argv[]){
QApplication app(argc, argv);
QWidget *janela = new QWidget;



QLabel *texto1 = new QLabel("SEGUNDA\n");
QLabel *texto2 = new QLabel("TERCA\n");
QLabel *texto3 = new QLabel("QUARTA\n");
QLabel *texto4 = new QLabel("QUINTA\n");
QLabel *texto5 = new QLabel("SEXTA\n");
QLabel *texto6 = new QLabel("SABADO\n");
QLabel *texto7 = new QLabel("DOMINGO\n");

QSpinBox *spinbox1 = new QSpinBox;
QSpinBox *spinbox2 = new QSpinBox;
QSpinBox *spinbox3 = new QSpinBox;
QSpinBox *spinbox4 = new QSpinBox;
QSpinBox *spinbox5 = new QSpinBox;
QSpinBox *spinbox6 = new QSpinBox;
QSpinBox *spinbox7 = new QSpinBox;
spinbox1->setRange(1,5);
spinbox2->setRange(1,5);
spinbox3->setRange(1,5);
spinbox4->setRange(1,5);
spinbox5->setRange(1,5);
spinbox6->setRange(1,5);
spinbox7->setRange(1,5);
QSpacerItem *spacer1 = new QSpacerItem(400,0);

QSlider *sliderhorizontal1 = new QSlider(Qt::Horizontal);
QSlider *sliderhorizontal2 = new QSlider(Qt::Horizontal);
QSlider *sliderhorizontal3 = new QSlider(Qt::Horizontal);
QSlider *sliderhorizontal4 = new QSlider(Qt::Horizontal);
QSlider *sliderhorizontal5 = new QSlider(Qt::Horizontal);
QSlider *sliderhorizontal6 = new QSlider(Qt::Horizontal);
QSlider *sliderhorizontal7 = new QSlider(Qt::Horizontal);
sliderhorizontal1->setRange(1,5);
sliderhorizontal2->setRange(1,5);
sliderhorizontal3->setRange(1,5);
sliderhorizontal4->setRange(1,5);
sliderhorizontal5->setRange(1,5);
sliderhorizontal6->setRange(1,5);
sliderhorizontal7->setRange(1,5);
QPushButton *sair = new QPushButton("SAIR");
QObject::connect ( sair, SIGNAL(clicked()), &app, SLOT(quit()));

QObject::connect ( spinbox1, SIGNAL(valueChanged( int)), sliderhorizontal1, SLOT(setValue (int)));
QObject::connect ( sliderhorizontal1, SIGNAL(valueChanged( int)), spinbox1, SLOT(setValue (int)));
QObject::connect ( spinbox2, SIGNAL(valueChanged(int )), sliderhorizontal2, SLOT(setValue (int)));
QObject::connect ( sliderhorizontal2, SIGNAL(valueChanged(int)), spinbox2, SLOT(setValue (int)));
QObject::connect ( spinbox3, SIGNAL(valueChanged( int)), sliderhorizontal3, SLOT(setValue (int)));
QObject::connect ( sliderhorizontal3, SIGNAL(valueChanged( int)), spinbox3, SLOT(setValue (int)));
QObject::connect ( spinbox4, SIGNAL(valueChanged(int )), sliderhorizontal4, SLOT(setValue (int)));
QObject::connect ( sliderhorizontal4, SIGNAL(valueChanged(int)), spinbox4, SLOT(setValue (int)));
QObject::connect ( spinbox5, SIGNAL(valueChanged( int)), sliderhorizontal5, SLOT(setValue (int)));
QObject::connect ( sliderhorizontal5, SIGNAL(valueChanged( int)), spinbox5, SLOT(setValue (int)));
QObject::connect ( spinbox6, SIGNAL(valueChanged(int )), sliderhorizontal6, SLOT(setValue (int)));
QObject::connect ( sliderhorizontal6, SIGNAL(valueChanged(int)), spinbox6, SLOT(setValue (int)));
QObject::connect ( spinbox7, SIGNAL(valueChanged(int )), sliderhorizontal7, SLOT(setValue (int)));
QObject::connect ( sliderhorizontal7, SIGNAL(valueChanged(int)), spinbox7, SLOT(setValue (int)));



//criar layouts
QVBoxLayout *coluna1 = new QVBoxLayout;
QVBoxLayout *coluna2 = new QVBoxLayout;
QVBoxLayout *coluna3 = new QVBoxLayout;
QVBoxLayout *coluna4 = new QVBoxLayout;
QHBoxLayout *corpo = new QHBoxLayout;
QHBoxLayout *base1 = new QHBoxLayout;
QHBoxLayout *base2 = new QHBoxLayout;
QVBoxLayout *principal = new QVBoxLayout;

coluna1->addWidget(texto1);
coluna1->addWidget(texto2);
coluna1->addWidget(texto3);
coluna1->addWidget(texto4);
coluna1->addWidget(texto5);
coluna1->addWidget(texto6);
coluna1->addWidget(texto7);

coluna2->addWidget(spinbox1);
coluna2->addWidget(spinbox2);
coluna2->addWidget(spinbox3);
coluna2->addWidget(spinbox4);
coluna2->addWidget(spinbox5);
coluna2->addWidget(spinbox6);
coluna2->addWidget(spinbox7);


coluna3->addWidget(sliderhorizontal1);
coluna3->addWidget(sliderhorizontal2);
coluna3->addWidget(sliderhorizontal3);
coluna3->addWidget(sliderhorizontal4);
coluna3->addWidget(sliderhorizontal5);
coluna3->addWidget(sliderhorizontal6);
coluna3->addWidget(sliderhorizontal7);

corpo->addLayout(coluna1);
corpo->addLayout(coluna2);
corpo->addLayout(coluna3);
corpo->addLayout(coluna4);

base1->addItem(spacer1);
base2->addWidget(sair);
principal->addLayout(corpo);
principal->addLayout(base1);
principal->addLayout(base2);

janela->setLayout(principal);
janela->show();
return app.exec();
}


Programa linha-a-linha:
1-7 -> nestas linhas são usados varios #include que servem para criar aplicaçoes, items ou wigets;
8-9 -> inicia aplicaçao a partir da consola;
14-20 -> começamos a fazer labels que sao basicamente texto; neste caso com os dias da semana.
22-35 -> da 22 á 28 sao criadas spinboxs que sao as caixas com numeros existentes no programa da 29 á 35 sao criadas ranges que fazem com que a spinbox apenas possa irdo numero 1 ao 5;
36 -> aqui e criado um spacer que faz com que a janela nao seja minimizada menos que 400 pixels neste caso;
38-51 -> da 38 á 44 sao criados sliders horizontais da 45 á 51 criamos outra vez ranges que fazem com que o slider apenas va de 1 a 5;
52-53 -> é criado um pushbutton com o nome sair; isto cria um botao no nosso que quando clicado o programa fecha.
55-68 -> começamos a fazer connects; aqui fazemos uma ligaçao dos nossos sliders as spinboxs que faz com que sempre que aumentarmos o numero num deles no outro tambem aumente.
73-80 -> criamos aqui layouts verticais (QVBoxLayout) e horizontais (QHBoxLayout); os layouts criados foram coluna1, coluna2, coluna3, coluna4, base1, base2 e principal;
82-160 -> aqui colocamos dentro dos nossos layouts os items e widgets criados em cima como os sliders etc.
118-119 -> colocamos todos os layouts dentro da janela criada no inicio do programa; depois na janela->show(); mostra finalmente os programas pois sem isto nao da;
120-121 -> fim do programa

no fim teremos este resultado:
Para fazer o Download do QT:
http://linux.softpedia.com/get/Programming/Widgets/Qt-179.shtml

Para instalar:
abrir consola e:
apt-get install libqt4-assistant libqt4-core libqt4-dbg libqt4-dbus libqt4-designer libqt4-dev libqt4-gui libqt4-help libqt4-network libqt4-opengl libqt4-opengl-dev libqt4-qt3support libqt4-script libqt4-sql libqt4-sql-ibase libqt4-sql-mysql libqt4-sql-odbc libqt4-sql-psql libqt4-sql-sqlite libqt4-sql-sqlite2 libqt4-svg libqt4-test libqt4-webkit libqt4-webkit-dbg libqt4-xml libqt4-xmlpatterns libqt4-xmlpatterns-dbg libqtcore4 libqtgui4 qt4-demos qt4-designer qt4-dev-tools qt4-doc qt4-doc-html qt4-qtconfig

0 comentários: