diff options
Diffstat (limited to 'examples/forever/forever.cpp')
-rw-r--r-- | examples/forever/forever.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/examples/forever/forever.cpp b/examples/forever/forever.cpp new file mode 100644 index 000000000..278572541 --- /dev/null +++ b/examples/forever/forever.cpp @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. +** +** This file is part of an example program for TQt. This example +** program may be used, distributed and modified without limitation. +** +*****************************************************************************/ + +#include <qtimer.h> +#include <qpainter.h> +#include <qapplication.h> +#include <stdlib.h> // defines rand() function + +#include "forever.h" + + +// +// Forever - a widget that draws rectangles forever. +// + +// +// Constructs a Forever widget. +// + +Forever::Forever( TQWidget *parent, const char *name ) + : TQWidget( parent, name ) +{ + for (int a=0; a<numColors; a++) { + colors[a] = TQColor( rand()&255, + rand()&255, + rand()&255 ); + } + rectangles = 0; + startTimer( 0 ); // run continuous timer + TQTimer * counter = new TQTimer( this ); + connect( counter, SIGNAL(timeout()), + this, SLOT(updateCaption()) ); + counter->start( 1000 ); +} + + +void Forever::updateCaption() +{ + TQString s; + s.sprintf( "TQt Example - Forever - %d rectangles/second", rectangles ); + rectangles = 0; + setCaption( s ); +} + + +// +// Handles paint events for the Forever widget. +// + +void Forever::paintEvent( TQPaintEvent * ) +{ + TQPainter paint( this ); // painter object + int w = width(); + int h = height(); + if(w <= 0 || h <= 0) + return; + paint.setPen( NoPen ); // do not draw outline + paint.setBrush( colors[rand() % numColors]);// set random brush color + + TQPoint p1( rand()%w, rand()%h ); // p1 = top left + TQPoint p2( rand()%w, rand()%h ); // p2 = bottom right + + TQRect r( p1, p2 ); + paint.drawRect( r ); // draw filled rectangle +} + +// +// Handles timer events for the Forever widget. +// + +void Forever::timerEvent( TQTimerEvent * ) +{ + for ( int i=0; i<100; i++ ) { + repaint( FALSE ); // repaint, don't erase + rectangles++; + } +} + + +// +// Create and display Forever widget. +// + +int main( int argc, char **argv ) +{ + TQApplication a( argc, argv ); // create application object + Forever always; // create widget + always.resize( 400, 250 ); // start up with size 400x250 + a.setMainWidget( &always ); // set as main widget + always.setCaption("TQt Example - Forever"); + always.show(); // show widget + return a.exec(); // run event loop +} |