<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- /home/espenr/tmp/qt - 3.3.8 - espenr - 2499/qt - x11 - free - 3.3.8/doc/tutorial.doc:216 -->
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=ISO-8859-1" >
< title > TQt Tutorial - Chapter 2: Calling it Quits< / title >
< style type = "text/css" > < ! - -
fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
body { background: #ffffff; color: black; }
-->< / style >
< / head >
< body >
< table border = "0" cellpadding = "0" cellspacing = "0" width = "100%" >
< tr bgcolor = "#E5E5E5" >
< td valign = center >
< a href = "index.html" >
< font color = "#004faf" > Home< / font > < / a >
| < a href = "classes.html" >
< font color = "#004faf" > All Classes< / font > < / a >
| < a href = "mainclasses.html" >
< font color = "#004faf" > Main Classes< / font > < / a >
| < a href = "annotated.html" >
< font color = "#004faf" > Annotated< / font > < / a >
| < a href = "groups.html" >
< font color = "#004faf" > Grouped Classes< / font > < / a >
| < a href = "functions.html" >
< font color = "#004faf" > Functions< / font > < / a >
< / td >
< td align = "right" valign = "center" > < img src = "logo32.png" align = "right" width = "64" height = "32" border = "0" > < / td > < / tr > < / table > < h1 align = center > TQt Tutorial - Chapter 2: Calling it Quits< / h1 >
< p > < center > < img src = "t2.png" alt = "Screenshot of tutorial two" > < / center >
< p > Having created a window in < a href = "tutorial1-01.html" > Chapter 1,< / a > we will
now go on to make the application quit properly when the user tells it to.
< p > We will also use a font that is more exciting than the default one.
< p > < pre > /****************************************************************
**
** TQt tutorial 2
**
****************************************************************/
#include < < a href = "qapplication-h.html" > ntqapplication.h< / a > >
#include < < a href = "qpushbutton-h.html" > ntqpushbutton.h< / a > >
#include < < a href = "qfont-h.html" > ntqfont.h< / a > >
int main( int argc, char **argv )
{
< a href = "ntqapplication.html" > TQApplication< / a > a( argc, argv );
< a href = "ntqpushbutton.html" > TQPushButton< / a > quit( "Quit", 0 );
quit.< a href = "ntqwidget.html#resize" > resize< / a > ( 75, 30 );
quit.< a href = "ntqwidget.html#setFont" > setFont< / a > ( TQFont( "Times", 18, TQFont::Bold ) );
TQObject::< a href = "ntqobject.html#connect" > connect< / a > ( & quit, SIGNAL(< a href = "ntqbutton.html#clicked" > clicked< / a > ()), & a, SLOT(< a href = "ntqapplication.html#quit" > quit< / a > ()) );
a.< a href = "ntqapplication.html#setMainWidget" > setMainWidget< / a > ( & quit );
quit.< a href = "ntqwidget.html#show" > show< / a > ();
return a.< a href = "ntqapplication.html#exec" > exec< / a > ();
}
< / pre >
< p > < h2 > Line-by-line Walkthrough
< / h2 >
< a name = "1" > < / a > < p > < pre > #include < < a href = "qfont-h.html" > ntqfont.h< / a > >
< / pre >
< p > Since this program uses < a href = "ntqfont.html" > TQFont< / a > , it needs to include ntqfont.h. TQt's font
abstraction is rather different from the horror provided by X, and
loading and using fonts has been highly optimized.
< p > < pre > < a href = "ntqpushbutton.html" > TQPushButton< / a > quit( "Quit", 0 );
< / pre >
< p > This time, the button says "Quit" and that's exactly what the program
will do when the user clicks the button. This is not a coincidence.
We still pass 0 as the parent, since the button is a top-level window.
< p > < pre > < a name = "x2292" > < / a > quit.< a href = "ntqwidget.html#resize" > resize< / a > ( 75, 30 );
< / pre >
< p > We've chosen another size for the button since the text is a bit
shorter than "Hello world!". We could also have used < a href = "ntqfontmetrics.html" > TQFontMetrics< / a >
to set right size.
< p > < pre > < a name = "x2293" > < / a > quit.< a href = "ntqwidget.html#setFont" > setFont< / a > ( TQFont( "Times", 18, TQFont::Bold ) );
< / pre >
< p > Here we choose a new font for the button, an 18-point bold font from
the Times family. Note that we create the font on the spot.
< p > It is also possible to change the default font (using < a href = "ntqapplication.html#setFont" > TQApplication::setFont< / a > ()) for the whole application.
< p > < pre > < a name = "x2291" > < / a > < a name = "x2290" > < / a > < a name = "x2288" > < / a > TQObject::< a href = "ntqobject.html#connect" > connect< / a > ( & quit, SIGNAL(< a href = "ntqbutton.html#clicked" > clicked< / a > ()), & a, SLOT(< a href = "ntqapplication.html#quit" > quit< / a > ()) );
< / pre >
< p > connect() is perhaps < em > the< / em > most central feature of TQt.
Note that connect() is a static function in < a href = "ntqobject.html" > TQObject< / a > . Do not confuse it
with the connect() function in the socket library.
< p > This line establishes a one-way connection between two TQt objects (objects
that inherit TQObject, directly or indirectly). Every TQt object can have
both < tt > signals< / tt > (to send messages) and < tt > slots< / tt > (to receive messages). All
widgets are TQt objects. They inherit < a href = "ntqwidget.html" > TQWidget< / a > which in turn inherits
TQObject.
< p > Here, the < em > clicked()< / em > signal of < em > quit< / em > is connected to the < em > quit()< / em > slot of < em > a< / em > , so that when the button is clicked, the
application quits.
< p > The < a href = "signalsandslots.html" > Signals and Slots< / a > documentation
describes this topic in detail.
< p > < h2 > Behavior
< / h2 >
< a name = "2" > < / a > < p > When you run this program, you will see an even smaller window than in
Chapter 1, filled with an even smaller button.
< p > (See < a href = "tutorial1-01.html#compiling" > Compiling< / a > for how to create a
makefile and build the application.)
< p > < h2 > Exercises
< / h2 >
< a name = "3" > < / a > < p > Try to resize the window. Press the button. Oops! That connect()
would seem to make some difference.
< p > Are there any other signals in < a href = "ntqpushbutton.html" > TQPushButton< / a > you can connect to quit?
Hint: The TQPushButton inherits most of its behavior from < a href = "ntqbutton.html" > TQButton< / a > .
< p > You're now ready for < a href = "tutorial1-03.html" > Chapter 3.< / a >
< p > [< a href = "tutorial1-01.html" > Previous tutorial< / a > ]
[< a href = "tutorial1-03.html" > Next tutorial< / a > ]
[< a href = "tutorial.html" > Main tutorial page< / a > ]
< p >
<!-- eof -->
< p > < address > < hr > < div align = center >
< table width = 100% cellspacing = 0 border = 0 > < tr >
< td > Copyright © 2007
< a href = "troll.html" > Trolltech< / a > < td align = center > < a href = "trademarks.html" > Trademarks< / a >
< td align = right > < div align = right > TQt 3.3.8< / div >
< / table > < / div > < / address > < / body >
< / html >