/**************************************************************************** ** $Id: qt/examples/forever/forever.h 2.2.1 edited 2000-08-31 $ ** ** Definition of something or other ** ** Created : 979899 ** ** Copyright (C) 1997 by Trolltech AS. All rights reserved. ** ** This file is part of an example program for Qt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #ifndef FOREVER_H #define FOREVER_H #include <qwidget.h> const int numColors = 120; class Forever : public QWidget { Q_OBJECT public: Forever( QWidget *parent=0, const char *name=0 ); protected: void paintEvent( QPaintEvent * ); void timerEvent( QTimerEvent * ); private slots: void updateCaption(); private: int rectangles; QColor colors[numColors]; }; #endif
/**************************************************************************** ** $Id: qt/examples/forever/forever.cpp 2.2.1 edited 2000-08-31 $ ** ** Copyright (C) 1992-2000 Trolltech AS. All rights reserved. ** ** This file is part of an example program for Qt. 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( QWidget *parent, const char *name ) : QWidget( parent, name ) { for (int a=0; a<numColors; a++) { colors[a] = QColor( rand()&255, rand()&255, rand()&255 ); } rectangles = 0; startTimer( 0 ); // run continuous timer QTimer * counter = new QTimer( this ); connect( counter, SIGNAL(timeout()), this, SLOT(updateCaption()) ); counter->start( 1000 ); } void Forever::updateCaption() { QString s; s.sprintf( "forever - %d rectangles/second", rectangles ); rectangles = 0; setCaption( s ); } // // Handles paint events for the Forever widget. // void Forever::paintEvent( QPaintEvent * ) { QPainter paint( this ); // painter object paint.setWindow( 0, 0, 1024, 1024 ); // define coordinate system paint.setPen( NoPen ); // do not draw outline paint.setBrush( colors[rand() % numColors]);// set random brush color QPoint p1( rand()&1023, rand()&1023 ); // p1 = top left QPoint p2( rand()&1023, rand()&1023 ); // p2 = bottom right QRect r( p1, p2 ); paint.drawRect( r ); // draw filled rectangle } // // Handles timer events for the Forever widget. // void Forever::timerEvent( QTimerEvent * ) { 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 ) { QApplication a( argc, argv ); // create application object Forever always; // create widget a.setMainWidget( &always ); // set as main widget always.show(); // show widget return a.exec(); // run event loop }
Copyright © 2000 Trolltech | Trademarks | Qt version 2.2.1
|