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.
187 lines
6.7 KiB
187 lines
6.7 KiB
13 years ago
|
<!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/examples/drawlines/drawlines.doc:5 -->
|
||
|
<html>
|
||
|
<head>
|
||
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||
|
<title>Connect the Points</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>Connect the Points</h1>
|
||
|
|
||
|
|
||
|
<p>
|
||
|
This example shows very simple mouse-based user interaction and
|
||
|
painting without any world transform matrix or other advanced
|
||
|
features. Run the program, click the button, move the mouse,
|
||
|
release the button, and watch the lines get drawn.
|
||
|
<p> <hr>
|
||
|
<p> Implementation:
|
||
|
<p> <pre>/****************************************************************************
|
||
|
** $Id: qt/connect.cpp 3.3.8 edited Jan 11 14:37 $
|
||
|
**
|
||
|
** Copyright (C) 1992-2007 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 <<a href="qwidget-h.html">qwidget.h</a>>
|
||
|
#include <<a href="qpainter-h.html">qpainter.h</a>>
|
||
|
#include <<a href="qapplication-h.html">qapplication.h</a>>
|
||
|
#include <stdlib.h>
|
||
|
|
||
|
|
||
|
const int MAXPOINTS = 2000; // maximum number of points
|
||
|
const int MAXCOLORS = 40;
|
||
|
|
||
|
|
||
|
//
|
||
|
// ConnectWidget - draws connected lines
|
||
|
//
|
||
|
|
||
|
class ConnectWidget : public <a href="qwidget.html">TQWidget</a>
|
||
|
{
|
||
|
public:
|
||
|
ConnectWidget( <a href="qwidget.html">TQWidget</a> *parent=0, const char *name=0 );
|
||
|
~ConnectWidget();
|
||
|
protected:
|
||
|
void paintEvent( <a href="qpaintevent.html">TQPaintEvent</a> * );
|
||
|
void mousePressEvent( <a href="qmouseevent.html">TQMouseEvent</a> *);
|
||
|
void mouseReleaseEvent( <a href="qmouseevent.html">TQMouseEvent</a> *);
|
||
|
void mouseMoveEvent( <a href="qmouseevent.html">TQMouseEvent</a> *);
|
||
|
private:
|
||
|
<a href="qpoint.html">TQPoint</a> *points; // point array
|
||
|
<a href="qcolor.html">TQColor</a> *colors; // color array
|
||
|
int count; // count = number of points
|
||
|
bool down; // TRUE if mouse down
|
||
|
};
|
||
|
|
||
|
|
||
|
//
|
||
|
// Constructs a ConnectWidget.
|
||
|
//
|
||
|
|
||
|
<a name="f475"></a>ConnectWidget::ConnectWidget( <a href="qwidget.html">TQWidget</a> *parent, const char *name )
|
||
|
: <a href="qwidget.html">TQWidget</a>( parent, name, WStaticContents )
|
||
|
{
|
||
|
<a href="qwidget.html#setBackgroundColor">setBackgroundColor</a>( white ); // white background
|
||
|
count = 0;
|
||
|
down = FALSE;
|
||
|
points = new <a href="qpoint.html">TQPoint</a>[MAXPOINTS];
|
||
|
colors = new <a href="qcolor.html">TQColor</a>[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.
|
||
|
//
|
||
|
|
||
|
<a name="x1661"></a>void ConnectWidget::<a href="qwidget.html#paintEvent">paintEvent</a>( <a href="qpaintevent.html">TQPaintEvent</a> * )
|
||
|
{
|
||
|
<a href="qpainter.html">TQPainter</a> paint( this );
|
||
|
for ( int i=0; i<count-1; i++ ) { // connect all points
|
||
|
for ( int j=i+1; j<count; j++ ) {
|
||
|
paint.<a href="qpainter.html#setPen">setPen</a>( colors[rand()%MAXCOLORS] ); // set random pen color
|
||
|
<a name="x1655"></a> paint.<a href="qpainter.html#drawLine">drawLine</a>( points[i], points[j] ); // draw line
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// Handles mouse press events for the connect widget.
|
||
|
//
|
||
|
|
||
|
<a name="x1659"></a>void ConnectWidget::<a href="qwidget.html#mousePressEvent">mousePressEvent</a>( <a href="qmouseevent.html">TQMouseEvent</a> * )
|
||
|
{
|
||
|
down = TRUE;
|
||
|
count = 0; // start recording points
|
||
|
<a href="qwidget.html#erase">erase</a>(); // erase widget contents
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// Handles mouse release events for the connect widget.
|
||
|
//
|
||
|
|
||
|
<a name="x1660"></a>void ConnectWidget::<a href="qwidget.html#mouseReleaseEvent">mouseReleaseEvent</a>( <a href="qmouseevent.html">TQMouseEvent</a> * )
|
||
|
{
|
||
|
down = FALSE; // done recording points
|
||
|
<a href="qwidget.html#update">update</a>(); // draw the lines
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// Handles mouse move events for the connect widget.
|
||
|
//
|
||
|
|
||
|
<a name="x1658"></a>void ConnectWidget::<a href="qwidget.html#mouseMoveEvent">mouseMoveEvent</a>( <a href="qmouseevent.html">TQMouseEvent</a> *e )
|
||
|
{
|
||
|
if ( down && count < MAXPOINTS ) {
|
||
|
<a href="qpainter.html">TQPainter</a> paint( this );
|
||
|
<a name="x1654"></a> points[count++] = e-><a href="qmouseevent.html#pos">pos</a>(); // add point
|
||
|
<a name="x1656"></a> paint.<a href="qpainter.html#drawPoint">drawPoint</a>( e-><a href="qmouseevent.html#pos">pos</a>() ); // plot point
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
//
|
||
|
// Create and display a ConnectWidget.
|
||
|
//
|
||
|
|
||
|
int main( int argc, char **argv )
|
||
|
{
|
||
|
<a href="qapplication.html">TQApplication</a> a( argc, argv );
|
||
|
ConnectWidget connect;
|
||
|
#ifndef QT_NO_WIDGET_TOPEXTRA // for TQt/Embedded minimal build
|
||
|
connect.<a href="qwidget.html#setCaption">setCaption</a>( "TQt Example - Draw lines");
|
||
|
#endif
|
||
|
a.<a href="qapplication.html#setMainWidget">setMainWidget</a>( &connect );
|
||
|
connect.<a href="qwidget.html#show">show</a>();
|
||
|
return a.<a href="qapplication.html#exec">exec</a>();
|
||
|
}
|
||
|
</pre>
|
||
|
|
||
|
<p>See also <a href="examples.html">Examples</a>.
|
||
|
|
||
|
<!-- 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>
|