
Po vytvorení okna v prvej kapitole, ideme teraz urobiť aplikáciu, ktorá sa korektne ukončí, keď jej to užívateľ prikáže.
Tiež použijeme vzrušujúcejší font než ten defaultný.
/****************************************************************
**
** Qt tutorial 2
**
****************************************************************/
#include <qapplication.h>
#include <qpushbutton.h>
#include <qfont.h>
int main( int argc, char **argv )
{
QApplication a( argc, argv );
QPushButton quit( "Quit" );
quit.resize( 75, 30 );
quit.setFont( QFont( "Times", 18, QFont::Bold ) );
QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
a.setMainWidget( &quit );
quit.show();
return a.exec();
}
#include <qfont.h>
Pretože tento program používa QFont, potrebuje vložiť qfont.h. Abstrakcia fontov v Qt je dosť odlišná od horroru poskytovaného X-ami, a nahrávanie a používanie fontov bolo silne optimalizované.
QPushButton quit( "Quit" );
Tentokrát tlačidlo hovorí "Quit" a to je presne to, čo program urobí, keď užívateľ tlačidlo stlačí. To nie je náhoda.
quit.resize( 75, 30 );
Zvolili sme si inú veľkosť tlačidla, keďže nový text je o niečo kratší než "Hello World!". Mohli sme tiež použiť QPushButton::setAutoResize(), alebo dokonca použiť QFontMetrics na nastavenie správnej veľkosti.
quit.setFont( QFont( "Times", 18, QFont::Bold ) );
Tu vyberáme nový font pre tlačidlo, 18-bodový tučný (bold) font z rodiny fontov Times. Všimnite si, že sme to urobili jediným krátkym volaním.
Je tiež možné zmeniť defaultný font celej aplikácie.
QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );
connect() je asi tá najhlavnejšia vymoženosť Qt. Všimnite si, že connect() je statická funkcia triedy QObject. Nemýľte si ju s connect() funkciou socket knižnice.
Tento riadok vytvorí jednosmerné spojenie medzi dvomi Qt objektmi
(priamymi alebo nepriamymi potomkami triedy QObject).
Každý Qt objekt môže mať signály (na posielanie správ) a
sloty (na prijímanie správ).
Všetky widgety sú Qt objekty. Sú potomkami triedy QWidget, a teda aj potomkami triedy QObject.
Tu sa signál clicked() objektu quit pripája na slot quit() objektu a, čiže keď užívateľ stlačí tlačidlo, aplikácia skončí.
Kapitola "Signály a sloty" dokumentácie detailne popisuje túto problematiku.
Keď spustíte tento program, uvidíte ešte menšie okno než v prvej kapitole, vyplnené ešte menším tlačidlom.
Vyskúšajte zmeniť veľkosť okna. Stlačte tlačidlo. Hoplá! Zdá sa, že ten connect() spôsobil nejakú zmenu :)
Sú aj iné signály v triede QPushButton, ktoré by sa dali napojiť na quit? Pomôcka: QPushButton dedí väčšinu svojho správania z QButton.
Teraz môžete ísť na kapitolu tri.
[Predchádzajúci tutoriál] [Ďalší tutoriál] [Hlavná stránka tutoriálu]
| Copyright © 1998 Troll Tech | Trademarks | Qt version 1.42
|