Po utworzeniu okna w rozdziale pierwszym, pójdźmy dalej i pozwólmy aplikacji zakończyć poprawnie działanie, kiedy użytkownik na to zezwoli.
Użyjemy także ładniejszej niż poprzednio (niż domyślnej) czczionki.
/**************************************************************** ** ** 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", 0 ); 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>Ponieważ ten program korzysta z QFont, musimy zawrzeć qfont.h. Pojęcie czcionki przez Qt różni się trochę od klasycznej obsługi przez X, ładowanie czcionek zostało badziej zoptymalizowane.
QPushButton quit( "Quit", 0 );Tym razem, przycisk mówiący "Quit" ("Wyjdź") będzie dokłanie to robił - opuszczał program gdy użytkownik wciśnie przycisk. To nie przypadek. Ciągle należy przekazć 0 jako rodzica, ponieważ przycisk jest głównym oknem.
quit.resize( 75, 30 );Wybraliśmy trochę mniejsze wymiary niż w "Hello World!". Mogliśmy także użyć QFontMetrics do ustawienia odpowedniej wielkości.
quit.setFont( QFont( "Times", 18, QFont::Bold ) );Tutaj wybieramy nową czcionkę dla przycisku, 18 punktową, pogrubioną czcionkę z rodziny Times.
Można także zmienić domyślną czcionkę (używając QApplication::setFont()) dla całej aplikacji.
QObject::connect( &quit, SIGNAL(clicked()), &a, SLOT(quit()) );connect() jest chyba najbardziej centralną właściwością Qt. Zauważ, że connect() jest statyczną funkcją w QObject. Nie myl jej z funckją connect() function in the socket library.
Ta linia ustanawia jednostronne połączenie pomiędzy dwoma objektami Qt (objekty które dziedzicząQObject, bezpośrednio lub pośrednio). Każdy objekt Qt może mieć zarówno signals (do wysyłania wiadomości) oraz slots (do otrzymywania). Wszystkie widgety są objektami Qt. Dziedziczą QWidget, który z kolei dziedziczy QObject.
Tutajm sygnał clicked() z quit jest przyłączany do quit() slot z a, tak więc gdy jest kliknęty aplikacja kończy działanie.
Dokumentacja Signals and Slots opisuje w detalach takie zachowania.
Czy są jakieś inne sygnały w QPushButton do których można się przyłączyć aby wyjść ? Podowiedź: QPushButton dziecziczy większość swoich zachowań po QButton.
Możesz teraz iść do rozdziału trzeciego.
[Poprzedni tutorial] [Następny tutorial] [Strona główna tutoriala]
Copyright (c) 2000 Troll Tech | Znaki towarowe |
Wersja Qt 2.1.0
|