首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

跪求正弦动态曲线demo参照

2012-12-17 
跪求正弦动态曲线demo参考研究了一个星期,还是没有成功搞出来,请高手指点[最优解释]widget.h文件#include

跪求正弦动态曲线demo参考
   研究了一个星期,还是没有成功搞出来,请高手指点
[最优解释]
widget.h文件
#include <QtGui/QWidget>
class Widget : public QWidget
{
    Q_OBJECT
    
public:
    Widget(QWidget *parent = 0);
    ~Widget();
protected:
        void paintEvent(QPaintEvent *event);
private:
    int buffer[400];
};
widget.cpp文件
#include "Widget.h"
#include "math.h"
#include <QPainter>

#define PI 3.1415926

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
    setBackgroundRole(QPalette::Dark);
    resize(320, 240);
    setWindowTitle(tr("Paint Demo"));

    for( int i=0; i<400; i++ ) {
        buffer[i] = (int)( sin( (i*PI) /100 ) * 70 );
    }
}
void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    QPoint beginPoint;
    QPoint endPoint;
    painter.setPen( Qt::blue );
    for( int i=0; i<399; i++ ) {
        beginPoint.setX( i );
        beginPoint.setY( buffer[i]+100 );
        endPoint.setX( i+1 );
        endPoint.setY( buffer[i+1]+100 );
        painter.drawLine( beginPoint, endPoint );
    }
}
[其他解释]
上面是静态的;动态加Timer:
.h文件:
#include <QtGui/QWidget>
#include <QTimer>

class Widget : public QWidget
{
    Q_OBJECT
    
public:
    Widget(QWidget *parent = 0);
    ~Widget();
protected:
        void paintEvent(QPaintEvent *event);
private slots:
    void flushBuff();
private:
    int buffer[400];
    QTimer *timer;
};
cpp文件:
#include "Widget.h"
#include "math.h"
#include <QPainter>

#define PI 3.1415926

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    setSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum);
    setBackgroundRole(QPalette::Dark);
    resize(320, 240);
        setWindowTitle(tr("Paint Demo"));

    for( int i=0; i<400; i++ ) {
        buffer[i] = (int)( sin( (i*PI) /100 ) * 70 );
    }
        QTimer *timer = new QTimer(this);


        connect( timer, SIGNAL(timeout()), this, SLOT(flushBuff()));
    timer->start( 20 );
}

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    QPoint beginPoint;
    QPoint endPoint;
    painter.setPen( Qt::blue );
    for( int i=0; i<399; i++ ) {
        beginPoint.setX( i );
        beginPoint.setY( buffer[i]+100 );
        endPoint.setX( i+1 );
        endPoint.setY( buffer[i+1]+100 );
        painter.drawLine( beginPoint, endPoint );
    }
}

void Widget::flushBuff()
{
    int tmp = buffer[0];
    int i;
    for( i=0; i<400; i++ ) {
        buffer[i] = buffer[i+1];
    }
    buffer[399] = tmp;
    update();
}

[其他解释]

引用:
上面是静态的;动态加Timer:
.h文件:
#include <QtGui/QWidget>
#include <QTimer>

class Widget : public QWidget
{
    Q_OBJECT
    
public:
    Widget(QWidget *parent = 0);
    ~Widget();
pr……
实在太感谢你了!

热点排行