示例是example里面提供的drawlines
////////////****************connect.cpp*****************///////////////////////////////
#include <qwidget.h>
#include <qpainter.h>
#include <qtopia/qpeapplication.h>
#include <stdlib.h>
const int MAXPOINTS = 2000; // maximum number of points
const int MAXCOLORS = 40;
//
// ConnectWidget - draws connected lines
//
class ConnectWidget : public QWidget
{
public:
ConnectWidget( QWidget *parent=0, const char *name=0 );
~ConnectWidget();
protected:
void paintEvent( QPaintEvent * );
void mousePressEvent( QMouseEvent *);
void mouseReleaseEvent( QMouseEvent *);
void mouseMoveEvent( QMouseEvent *);
private:
QPoint *points; // point array
QColor *colors; // color array
int count; // count = number of points
bool down; // TRUE if mouse down
};
//
// Constructs a ConnectWidget.
//
ConnectWidget::ConnectWidget( QWidget *parent, const char *name )
: QWidget( parent, name, WNorthWestGravity )
{
setBackgroundColor( white ); // white background
count = 0;
down = FALSE;
points = new QPoint[MAXPOINTS];
colors = new QColor[MAXCOLORS];
for ( int i=0; i<MAXCOLORS; i++ ) // init color array
colors
= QColor( 0, 0, 0 );
}
ConnectWidget::~ConnectWidget()
{
delete[] points; // cleanup
delete[] colors;
}
//
// Handles paint events for the connect widget.
//
void ConnectWidget::paintEvent( QPaintEvent * )
{
QPainter paint( this );
paint.setPen(QPen(colors[0],Qt::RoundJoin)); // set random pen color
paint.rotate(-30);
paint.drawRect(80,80,100,20); // draw line
}
//
// Handles mouse press events for the connect widget.
//
void ConnectWidget::mousePressEvent( QMouseEvent * )
{
down = TRUE;
count = 0; // start recording points
erase(); // erase widget contents
}
//
// Handles mouse release events for the connect widget.
//
void ConnectWidget::mouseReleaseEvent( QMouseEvent * )
{
down = FALSE; // done recording points
update(); // draw the lines
}
//
// Handles mouse move events for the connect widget.
//
void ConnectWidget::mouseMoveEvent( QMouseEvent *e )
{
if ( down && count < MAXPOINTS ) {
QPainter 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 )
{
QApplication a( argc, argv );
ConnectWidget connect;
a.setMainWidget( &connect );
connect.setCaption("Qt Example - Draw lines");
connect.show();
return a.exec();
}
////////////////////////////////////////***************************************///////////////////////////////////
修改部分是添加了 rotate 函数,
void ConnectWidget::paintEvent( QPaintEvent * )
{
QPainter paint( this );
paint.setPen(QPen(colors[0],Qt::RoundJoin)); // set random pen color
paint.rotate(-30);
paint.drawRect(80,80,100,20); // draw line
}
我的目的是 想 画一个可以转动的摇杆,每过一定时间旋转一个角度。
所以 先画了一个矩形,让其逆时针旋转30°;
其中 rotate 就是重新编译后,使用的函数(如果 不加rotate 可以显示矩形;加了后没显示出来,就关闭了)
http://www.aiothome.net/read.php?tid-4315.html
上面是我上次求助,“求助,关于 <qpainter.h> 里面class QPainter, rotate 函数未定义”