跪求正弦动态曲线demo参考

trustguan 2012-12-05 08:52:30
研究了一个星期,还是没有成功搞出来,请高手指点
...全文
163 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2012-12-06
  • 打赏
  • 举报
回复
引用 2 楼 a549934338 的回复:
上面是静态的;动态加Timer: .h文件: #include <QtGui/QWidget> #include <QTimer> class Widget : public QWidget { Q_OBJECT public: Widget(QWidget *parent = 0); ~Widget(); pr……
实在太感谢你了!
a549934338 2012-12-06
  • 打赏
  • 举报
回复
上面是静态的;动态加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(); }
a549934338 2012-12-06
  • 打赏
  • 举报
回复
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 ); } }

16,216

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧