h1. Qt:n ideaa
Qt on
h1. Projekti, Application ja Label
Qt:n yksi tärkeimmistä tiedostoista on projektitiedosto, tästä [qmake|http://doc.trolltech.com/4.2/qmake-manual.html] ohjelma osaa tehdä automaattisesti [make|http://www.cs.tut.fi/~ohjtuki/make/]\-tiedoston. Ensimäisessä esimerkissämme projektitiedostossa terve.pro kerrotaan, että ollaan tekemässä sovellusta "application", siitä app ja ohjelmaan sisällytetään lähdekoodit SOURCES, nyt terve.cpp
{code}
TEMPLATE = app
SOURCES = terve.cpp
{code}
Varsinainen ohjelma terve.cpp on esitetty alla olevassa "laatikossa"
{code}
#include <QApplication> // Kyseessä Qt-sovellus
#include <QLabel> // Label eli ilmoitusikkuna
int main(int argc, char *argv[])
{
QApplication app(argc, argv); //luodaan pinoon sovellus
QLabel *label = new QLabel("Terve, eka Qt-sovellus!");
label->show();
return app.exec(); //täällä ollaan kunnes sovellus sulkeutuu
}
{code}
h1. PushButton, SIGNAL ja SLOT
Tässä esimerkissä opetellaan painonappien, signaalien ja slotien käyttöä. Signaalit ja slotit ovat Qt:n tärkeimmät elementit tiedon välitykseen ja ohjelman kulun konrollointiin Qt-ympäristössä.
Projektitiedosto loppu.pro
{code}
TEMPLATE = app
SOURCES = loppu.cpp
{code}
Varsinainen ohjelma on loppu.cpp tiedostossa
{code}
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton *nappi = new QPushButton("LOPPU");//esitellään nappi
// yhdistetään napin signaali clicked sovelluksen slotiin quit
QObject::connect(nappi, SIGNAL(clicked()),&app, SLOT(quit()));
nappi->show();//näytetään nappi huomaa -> , koska nappi on osoitin kekoon
return app.exec();
}
{code}
h1. QHBoxLayout, QSlider ja QSpinBox
Projektitiedosto ika.pro
{code}
TEMPLATE = app
SOURCES = ika.cpp
{code}
Varsinainen ohjelma on ika.cpp tiedostossa
{code}
#include <QApplication>
#include <QHBoxLayout>
#include <QSlider>
#include <QSpinBox>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget *window = new QWidget;//luodaan mikä tahansa elementti
window->setWindowTitle("Anna ikasi:");
QSpinBox *spinBox = new QSpinBox;//luodaan spinbox kekoon
QSlider *slider = new QSlider(Qt::Horizontal);//luodaan spinbox kekoon, huomaa parametri, jolla saadaan asetettua sliderin suunta
spinBox->setRange(0, 130);//määrätään spboxin rajat
slider->setRange(0, 130);
QObject::connect(spinBox, SIGNAL(valueChanged(int)),slider, SLOT(setValue(int)));//liitetään spinbox slideriin
QObject::connect(slider, SIGNAL(valueChanged(int)),spinBox, SLOT(setValue(int)));//liitetään slider spinboxiin
spinBox->setValue(35);//annetaan alkuarvo, koska slider ja spinbox "naitettiin" keskenään, menee arvo molemmille
QHBoxLayout *layout = new QHBoxLayout;//tehdään vaakasuora layout ja varataansille tilaa keosta
layout->addWidget(spinBox);//lisätään vasemmalla layoutiin spinbox
layout->addWidget(slider);//lisätään oikealle layoutiin slider
window->setLayout(layout);//lisätään layout näytettävään ikkunaan
window->show();//näytetään ikkuna
return app.exec();//suoritetaan sovellus
}
{code} |