Primeiras experiencias com QT

Novembro 7, 2008 às 12:05 pm | Publicado em Uncategorized | Deixe um comentário

Iniciado o modulo 8, Conceitos avançados de programação, começamos a usar a parte gráfica da programação (GUI) e foi hora de começar a aprender QT, o framework escolhido para começar a desenvolver capacidades na construcao das interfaces gráficas. A linguagem utilizada é o C++ e o QT é uma framework/API baseada na filosofia open source que torna mais fácil a programação gráfica com uma potencialidade incrível.

Quem quiser saber mais sobre QT pode visitar o site: http://trolltech.com

Agora que a experiencia ja comecou, ja realizei um pequeno programa a sugestao do professor durante a aula, o qual vou partilhar de seguida:


/* Inclusao de todas as classes necessarias para o uso dos objectos */
#include <QApplication>
#include <QLabel>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QWidget>
#include <QSpacerItem>
#include <QSpinBox>
#include <QSlider>
#include <QPushButton>

int main(int argc, char *argv[]){
    /* Todas as variaveis necessarias para a interface grafica(objectos) */
    QApplication app(argc, argv);
    QWidget *janela = new QWidget;
    QLabel *dia1 = new QLabel("SEG");
    QLabel *dia2 = new QLabel("TER");
    QLabel *dia3 = new QLabel("QUA");
    QLabel *dia4 = new QLabel("QUI");
    QLabel *dia5 = new QLabel("SEX");
    QLabel *dia6 = new QLabel("SAB");
    QLabel *dia7 = new QLabel("DOM");
    QSpinBox *sbdia1 = new QSpinBox;
    QSpinBox *sbdia2 = new QSpinBox;
    QSpinBox *sbdia3 = new QSpinBox;
    QSpinBox *sbdia4 = new QSpinBox;
    QSpinBox *sbdia5 = new QSpinBox;
    QSpinBox *sbdia6 = new QSpinBox;
    QSpinBox *sbdia7 = new QSpinBox;
    QSlider *sliderdia1 = new QSlider(Qt::Horizontal);
    QSlider *sliderdia2 = new QSlider(Qt::Horizontal);
    QSlider *sliderdia3 = new QSlider(Qt::Horizontal);
    QSlider *sliderdia4 = new QSlider(Qt::Horizontal);
    QSlider *sliderdia5 = new QSlider(Qt::Horizontal);
    QSlider *sliderdia6 = new QSlider(Qt::Horizontal);
    QSlider *sliderdia7 = new QSlider(Qt::Horizontal);
    QVBoxLayout *diasdasemana = new QVBoxLayout;
    QVBoxLayout *spinboxes = new QVBoxLayout;
    QVBoxLayout *sliders = new QVBoxLayout;
    QVBoxLayout *layout = new QVBoxLayout;
    QHBoxLayout *Hcontainer = new QHBoxLayout;
    QSpacerItem *spacer = new QSpacerItem(400, 0);
    QPushButton *botaoSair = new QPushButton("Sair");

    /*Alteracao das propriedades das SpinBox e dos Sliders
     para que exista um limite minimo e maximo*/
    sliderdia1->setRange(1,5);
    sbdia1->setRange(1, 5);
    sliderdia2->setRange(1,5);
    sbdia2->setRange(1, 5);
    sliderdia3->setRange(1,5);
    sbdia3->setRange(1, 5);
    sliderdia4->setRange(1,5);
    sbdia4->setRange(1, 5);
    sliderdia5->setRange(1,5);
    sbdia5->setRange(1, 5);
    sliderdia6->setRange(1,5);
    sbdia6->setRange(1, 5);
    sliderdia7->setRange(1,5);
    sbdia7->setRange(1, 5);

    /* Ligaçao entre as SpinBox e os sliders e vice-versa; Funcionalidade do botao sair*/
    QObject:: connect(botaoSair, SIGNAL(clicked() ), &app, SLOT( quit() ) );
    QObject:: connect(sliderdia1, SIGNAL(valueChanged(int) ), sbdia1, SLOT( setValue(int) ) );
    QObject:: connect(sliderdia2, SIGNAL(valueChanged(int) ), sbdia2, SLOT( setValue(int) ) );
    QObject:: connect(sliderdia3, SIGNAL(valueChanged(int) ), sbdia3, SLOT( setValue(int) ) );
    QObject:: connect(sliderdia4, SIGNAL(valueChanged(int) ), sbdia4, SLOT( setValue(int) ) );
    QObject:: connect(sliderdia5, SIGNAL(valueChanged(int) ), sbdia5, SLOT( setValue(int) ) );
    QObject:: connect(sliderdia6, SIGNAL(valueChanged(int) ), sbdia6, SLOT( setValue(int) ) );
    QObject:: connect(sliderdia7, SIGNAL(valueChanged(int) ), sbdia7, SLOT( setValue(int) ) );
    QObject:: connect(sbdia1, SIGNAL(valueChanged(int) ), sliderdia1, SLOT( setValue(int) ) );
    QObject:: connect(sbdia2, SIGNAL(valueChanged(int) ), sliderdia2, SLOT( setValue(int) ) );
    QObject:: connect(sbdia3, SIGNAL(valueChanged(int) ), sliderdia3, SLOT( setValue(int) ) );
    QObject:: connect(sbdia4, SIGNAL(valueChanged(int) ), sliderdia4, SLOT( setValue(int) ) );
    QObject:: connect(sbdia5, SIGNAL(valueChanged(int) ), sliderdia5, SLOT( setValue(int) ) );
    QObject:: connect(sbdia6, SIGNAL(valueChanged(int) ), sliderdia6, SLOT( setValue(int) ) );
    QObject:: connect(sbdia7, SIGNAL(valueChanged(int) ), sliderdia7, SLOT( setValue(int) ) );

    /*Organizacao da disposicao de todos os objectos na janela*/
    diasdasemana->addWidget(dia1);
    diasdasemana->addWidget(dia2);
    diasdasemana->addWidget(dia3);
    diasdasemana->addWidget(dia4);
    diasdasemana->addWidget(dia5);
    diasdasemana->addWidget(dia6);
    diasdasemana->addWidget(dia7);
    spinboxes->addWidget(sbdia1);
    spinboxes->addWidget(sbdia2);
    spinboxes->addWidget(sbdia3);
    spinboxes->addWidget(sbdia4);
    spinboxes->addWidget(sbdia5);
    spinboxes->addWidget(sbdia6);
    spinboxes->addWidget(sbdia7);
    sliders->addWidget(sliderdia1);
    sliders->addWidget(sliderdia2);
    sliders->addWidget(sliderdia3);
    sliders->addWidget(sliderdia4);
    sliders->addWidget(sliderdia5);
    sliders->addWidget(sliderdia6);
    sliders->addWidget(sliderdia7);
    Hcontainer->addLayout(diasdasemana);
    Hcontainer->addLayout(spinboxes);
    Hcontainer->addLayout(sliders);
    layout->addLayout(Hcontainer);
    layout->addWidget(botaoSair);
    layout->addItem(spacer);

    /*Mostrar a janela final ( Widget ) */
    janela->setLayout(layout);
    janela->setWindowTitle("Dias da Semana");
    janela->show();
    return app.exec();
}

Segue-se o screenshot da aplicacao em funcionamento:

capturaecra-dias-da-semana

Deixe um Comentário »

RSS feed for comments on this post. TrackBack URI

Deixe um comentário

Create a free website or blog at WordPress.com.
Entries e comentários feeds.