我用了qt的一个程序结果出错了
请指教!
aclock.h:
#ifndef ACLOCK_H
#define ACLOCK_H
                                                                                
#include <qwidget.h>
#include <qdatetime.h>
                                                                                
class AnalogClock : public QWidget              // analog clock widget
{
    Q_OBJECT
public:
    AnalogClock( QWidget *parent=0, const char *name=0 );
    void setAutoMask(bool b);
                                                                                
protected:
    void updateMask();
    void paintEvent( QPaintEvent *);
                                                                                
private slots:
    void drawClock( QPainter * );
    void        timeout();
                                                                                
private:
    QTime       time;
 };
#endif // ACLOCK_H
aclock.cpp:
#include "aclock.h"
#include <qtimer.h>
#include <qpainter.h>
#include <qbitmap.h>
AnalogClock::AnalogClock( QWidget *parent, const char *name )
    : QWidget( parent, name )
{
    time = QTime::currentTime();                // get current time
    QTimer *internalTimer = new QTimer( this ); // create internal timer
    connect( internalTimer, SIGNAL(timeout()), SLOT(timeout()) );
    internalTimer->start( 5000 );               // emit signal every 5 seconds
}
void AnalogClock::timeout()
{
    QTime new_time = QTime::currentTime();      // get the current time
    if ( new_time.minute() != time.minute() ) { // minute has changed
        if (autoMask())
            updateMask();
        else
            update();
    }
}
void AnalogClock::paintEvent( QPaintEvent * )
{
    if ( autoMask() )
        return;
    QPainter paint( this );
    paint.setBrush( colorGroup().foreground() );
    drawClock( &paint );
}
void AnalogClock::updateMask()  // paint clock mask
{
    QBitmap bm( size() );
    bm.fill( color0 );                  //transparent
    QPainter paint;
    paint.begin( &bm, this );
    paint.setBrush( color1 );           
    paint.setPen( color1 );
    drawClock( &paint );
    paint.end();
    setMask( bm );
}
void AnalogClock::drawClock( QPainter *paint )
{
    paint->save();
    paint->setWindow( -500,-500, 1000,1000 );
    QRect v = paint->viewport();
    int d = QMIN( v.width(), v.height() );
    paint->setViewport( v.left() + (v.width()-d)/2,
                        v.top() + (v.height()-d)/2, d, d );
    time = QTime::currentTime();
    QPointArray pts;
    paint->save();
    paint->rotate( 30*(time.hour()%12-3) + time.minute()/2 );
    pts.setPoints( 4, -20,0,  0,-20, 300,0, 0,20 );
    paint->drawPolygon( pts );
    paint->restore();
    paint->save();
    paint->rotate( (time.minute()-15)*6 );
    pts.setPoints( 4, -10,0, 0,-10, 400,0, 0,10 );
    paint->drawPolygon( pts );
    paint->restore();
    for ( int i=0; i<12; i++ ) {
        paint->drawLine( 440,0, 460,0 );
        paint->rotate( 30 );
    }
    paint->restore();
}
void AnalogClock::setAutoMask(bool b)
{
    if (b)
        setBackgroundMode( PaletteForeground );
    else
        setBackgroundMode( PaletteBackground );
    QWidget::setAutoMask(b);
}
main.cpp
#include "aclock.h"
#include <qapplication.h>
int main( int argc, char **argv )
{
    QApplication a( argc, argv );
    AnalogClock *clock = new AnalogClock;
    if ( argc == 2 && strcmp( argv[1], "-transparent" ) == 0 )
        clock->setAutoMask( TRUE );
    clock->resize( 100, 100 );
    a.setMainWidget( clock );
    clock->setCaption("Qt Example - Analog Clock");
    clock->show();
    int result = a.exec();
    delete clock;
    return result;
}
结果错误信息是:
aclock.cpp: In member function `void AnalogClock::drawClock(QPainter*)':
aclock.cpp:71: no matching function for call to `QPainter::setWindow(int, int,
   int, int)'
aclock.cpp:73: no matching function for call to `QPainter::viewport()'
aclock.cpp:76: no matching function for call to `QPainter::setViewport(int,
   int, int&, int&)'
aclock.cpp:82: no matching function for call to `QPainter::rotate(int)'
aclock.cpp:88: no matching function for call to `QPainter::rotate(int)'
aclock.cpp:95: no matching function for call to `QPainter::rotate(int)'
make: *** [aclock.o] Error 1
可是我已经包涵了qpainter.h 文件,里面也有上面的函数
请指教!