Esittely latautuu. Ole hyvä ja odota

Esittely latautuu. Ole hyvä ja odota

Qt-käyttöliittymäkirjasto Matti Lehtinen 27.11.2007.

Samankaltaiset esitykset


Esitys aiheesta: "Qt-käyttöliittymäkirjasto Matti Lehtinen 27.11.2007."— Esityksen transkriptio:

1 Qt-käyttöliittymäkirjasto Matti Lehtinen 27.11.2007

2 Esitelmän rakenne Qt yleisesti Työkalut Kääntäminen Kirjastomoduulit Tapahtumienkäsittely Esimerkki Yhteenveto

3 Qt yleisesti Graafinen käyttöliittymäkirjasto Norjalaisen Trolltech-yrityksen kehittämä Toimii useammilla käyttöjärjestelmillä C++ ja Java Lisenssit kaupalliseen ja avoimeen kehitykseen Kaupallinen tarjoaa eri versioita eri käyttötarkoituksiin

4 Työkalut (1/2) Designer – Käyttöliittymien rakentamiseen – Oman koodin kirjoittaminen ei mahdollista – Laaja komponenttivalikoima – Löytyy lisäosana useammalle IDE:lle

5 Työkalut (2/2) Linquist – Helpottaa kielien kääntämistä Monia pienempiä työkaluja – Lähdekoodit mukana – Assistant, dokumentaation navigointiin

6 Kääntäminen C++ kääntäjää ja linkittäjää ei ole mukana Qmake, kuvaustiedostojen (makefile) tekemiseen – Toimii projektitiedostojen mukaan Uic (User Interface Compiler) Moc (Meta Object Compiler)

7 Kirjastomoduulit Core GUI OpenGL Verkko Tietokanta XML

8 Tapahtumienkäsittely Signal-slot-mekanismi Tyyppien tarkistus Yhdistelmien tekeminen vapaata – Luokkien ei tarvitse tuntea toisiaan – Yhdistelmiä rajattomasti Periytyvät normaalisti Turvallista käyttää säikeitten kanssa Ei yhteensopiva C++:n poikkeuksienkäsittelyn kanssa

9 Esimerkkisovellus (1/4)

10 Esimerkkisovellus (2/4) hellowindow.h #include class HelloWindow : public QPushButton { Q_OBJECT private: QTimer *timer; unsigned int timeLeft; public: HelloWindow(); private slots: void updateTime(); signals: void helloQuits(); };

11 Esimerkkisovellus (3/4) hellowindow.cpp #include "hellowindow.h" HelloWindow::HelloWindow() { timeLeft = 10; timer = new QTimer(this); this->connect(timer, SIGNAL(timeout()), this, SLOT(updateTime())); this->connect(this, SIGNAL(clicked()), this, SIGNAL(helloQuits())); setWindowTitle(tr("Hello World!")); resize(200, 60); updateTime(); timer->setInterval(1000); timer->start(); } void HelloWindow::updateTime() { if (!(--timeLeft)) emit helloQuits(); this->setText(tr("Quit") + "..." + QString::number(timeLeft)); }

12 Esimerkkisovellus (4/4) main.cpp #include #include "hellowindow.h" int main(int argc, char **argv) { QApplication app(argc, argv); HelloWindow hello; QObject::connect(&hello, SIGNAL(helloQuits()), &app, SLOT(quit())); hello.show(); return app.exec(); }

13 Yhteenveto + Helppo ja monipuolinen kirjasto + Turvallinen tapahtumienkäsittely + C++ - Signal-slot-mekanismi ei yhtä nopeaa kuin suora takaisinkutsu - Ei yhteensopiva C++:n poikkeuksienkäsittelyn kanssa

14 Kiitos!


Lataa ppt "Qt-käyttöliittymäkirjasto Matti Lehtinen 27.11.2007."

Samankaltaiset esitykset


Iklan oleh Google