You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
3.0 KiB
133 lines
3.0 KiB
13 years ago
|
/****************************************************************************
|
||
|
**
|
||
|
** 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 <qwidget.h>
|
||
|
#include <qpainter.h>
|
||
|
#include <qapplication.h>
|
||
|
#include <stdlib.h>
|
||
|
|
||
|
|
||
|
const int MAXPOINTS = 2000; // maximum number of points
|
||
|
const int MAXCOLORS = 40;
|
||
|
|
||
|
|
||
|
//
|
||
|
// ConnectWidget - draws connected lines
|
||
|
//
|
||
|
|
||
|
class ConnectWidget : public TQWidget
|
||
|
{
|
||
|
public:
|
||
|
ConnectWidget( TQWidget *parent=0, const char *name=0 );
|
||
|
~ConnectWidget();
|
||
|
protected:
|
||
|
void paintEvent( TQPaintEvent * );
|
||
|
void mousePressEvent( TQMouseEvent *);
|
||
|
void mouseReleaseEvent( TQMouseEvent *);
|
||
|
void mouseMoveEvent( TQMouseEvent *);
|
||
|
private:
|
||
|
TQPoint *points; // point array
|
||
|
TQColor *colors; // color array
|
||
|
int count; // count = number of points
|
||
|
bool down; // TRUE if mouse down
|
||
|
};
|
||
|
|
||
|
|
||
|
//
|
||
|
// Constructs a ConnectWidget.
|
||
|
//
|
||
|
|
||
|
ConnectWidget::ConnectWidget( TQWidget *parent, const char *name )
|
||
|
: TQWidget( parent, name, WStaticContents )
|
||
|
{
|
||
|
setBackgroundColor( white ); // white background
|
||
|
count = 0;
|
||
|
down = FALSE;
|
||
|
points = new TQPoint[MAXPOINTS];
|
||
|
colors = new TQColor[MAXCOLORS];
|
||
|
for ( int i=0; i<MAXCOLORS; i++ ) // init color array
|
||
|
colors[i] = TQColor( rand()&255, rand()&255, rand()&255 );
|
||
|
}
|
||
|
|
||
|
ConnectWidget::~ConnectWidget()
|
||
|
{
|
||
|
delete[] points; // cleanup
|
||
|
delete[] colors;
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// Handles paint events for the connect widget.
|
||
|
//
|
||
|
|
||
|
void ConnectWidget::paintEvent( TQPaintEvent * )
|
||
|
{
|
||
|
TQPainter paint( this );
|
||
|
for ( int i=0; i<count-1; i++ ) { // connect all points
|
||
|
for ( int j=i+1; j<count; j++ ) {
|
||
|
paint.setPen( colors[rand()%MAXCOLORS] ); // set random pen color
|
||
|
paint.drawLine( points[i], points[j] ); // draw line
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// Handles mouse press events for the connect widget.
|
||
|
//
|
||
|
|
||
|
void ConnectWidget::mousePressEvent( TQMouseEvent * )
|
||
|
{
|
||
|
down = TRUE;
|
||
|
count = 0; // start recording points
|
||
|
erase(); // erase widget contents
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// Handles mouse release events for the connect widget.
|
||
|
//
|
||
|
|
||
|
void ConnectWidget::mouseReleaseEvent( TQMouseEvent * )
|
||
|
{
|
||
|
down = FALSE; // done recording points
|
||
|
update(); // draw the lines
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// Handles mouse move events for the connect widget.
|
||
|
//
|
||
|
|
||
|
void ConnectWidget::mouseMoveEvent( TQMouseEvent *e )
|
||
|
{
|
||
|
if ( down && count < MAXPOINTS ) {
|
||
|
TQPainter paint( this );
|
||
|
points[count++] = e->pos(); // add point
|
||
|
paint.drawPoint( e->pos() ); // plot point
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// Create and display a ConnectWidget.
|
||
|
//
|
||
|
|
||
|
int main( int argc, char **argv )
|
||
|
{
|
||
|
TQApplication a( argc, argv );
|
||
|
ConnectWidget connect;
|
||
|
#ifndef QT_NO_WIDGET_TOPEXTRA // for TQt/Embedded minimal build
|
||
|
connect.setCaption( "TQt Example - Draw lines");
|
||
|
#endif
|
||
|
a.setMainWidget( &connect );
|
||
|
connect.show();
|
||
|
return a.exec();
|
||
|
}
|