Qwt框架练习1
来源:互联网 发布:Ubuntu sambaclient 编辑:程序博客网 时间:2024/05/25 19:56
Qwt比较好的博客
1.http://blog.hehehehehe.cn/a/12764.htm
2.http://blog.csdn.net/evense/article/details/10087501
3.http://blog.csdn.net/zhx6044/article/details/9114733
4.http://blog.csdn.net/e5Max/article/category/1304653
5.http://blog.csdn.net/lovebird_27/article/details/50440877(修改plot的放大和缩小的方式)
上面第5个博客是通过设置QwtPlotZoomer的各种参数来对放大和缩小plot的方式来进行设置,我这里补充一点对QwtPlotPanner和QwtPlotMagnifier设置,来改变放大和缩小plot的方式
如QwtPlotPanner默认是按住鼠标左键即可拖动plot,设置为按住鼠标右键同时按住键盘上的Ctrl键才能拖动plot
QwtPlotPanner *panner = new QwtPlotPanner(canvas);panner->setMouseButton(Qt::RightButton,Qt::ControlModifier);
设置按住键盘上的Alt键同时移动鼠标右键来放大和缩小plot
QwtPlotMagnifier *magnifier = new QwtPlotMagnifier(canvas);magnifier->setMouseButton(Qt::RightButton,Qt::AltModifier);
6.http://blog.csdn.net/wangfei19880117/article/details/36888417(用Qwt绘制正弦和余弦曲线)
这个实例展示了拖动QwtPlot上点的方法
仿照simpleplot
main.cpp
#include <QApplication>#include <qwt_plot.h>#include <qwt_legend.h>#include <qwt_plot_grid.h>#include <qwt_plot_curve.h>#include <qwt_symbol.h>int main(int argc, char *argv[]){ QApplication a(argc, argv); QwtPlot plot; //设置整个图形的标题 plot.setTitle("Plot Demo"); plot.setCanvasBackground(Qt::white); //Y轴在左边,最小值为0.0,最大值为100.0,步长为10 plot.setAxisScale(QwtPlot::yLeft,0.0,100.0,10.0); //X轴在左边,最小值为0.0,最大值为100.0,步长自动设置 plot.setAxisScale(QwtPlot::xBottom,0.0,100.0); //插入一个图例,即程序右边显示的部分 plot.insertLegend(new QwtLegend()); //新建一个表格 QwtPlotGrid *grid = new QwtPlotGrid(); //将此QwtPlotItem添加到QwtPlot上面,QwtPlotGrid继承自QwtPlotItem grid->attach(&plot); //设置图像界面的大小,从QWidget继承下来 //曲线类 QwtPlotCurve *curve = new QwtPlotCurve(); //图例的标题 //继承制QwtPlotItem的方法 curve->setTitle("Some Points"); //设置曲线的颜色和宽度 curve->setPen(Qt::blue,4); curve->attach(&plot); //继承制QwtPlotItem类的方法 //设置提示并显示 curve->setRenderHint(QwtPlotItem::RenderAntialiased,true); //画符号的类,用来显示点的样式 QwtSymbol *symbol = new QwtSymbol(QwtSymbol::Ellipse,QBrush(Qt::yellow),QPen(Qt::red,2),QSize(8,8)); curve->setSymbol(symbol); QPolygonF points;//放点的一个集合类 points<<QPointF(0.0,4.0)<<QPointF(100.0,20.0); curve->setSamples(points); plot.resize(600,400); plot.show(); return a.exec();}
Qwt动态显示数据
mainwindow.h(刷新整个mainwindow)
#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include <qwt_plot.h>#include <qwt_plot_curve.h>#include <QTimerEvent>class MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow(QWidget *parent = 0); QwtPlot *plot; QwtPlotCurve *curve; ~MainWindow();private: void timerEvent(QTimerEvent *); double time[10]; double value[10];};#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"#include <qwt_plot_canvas.h>#include <qwt_plot_grid.h>#include <qwt_plot_picker.h>#include <QPolygonF>#include <QColor>#include <QHBoxLayout>#include <QWidget>#include <QDebug>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){ QHBoxLayout *mainLayout = new QHBoxLayout(); QWidget *widget = new QWidget(); widget->setLayout(mainLayout); setCentralWidget(widget); plot = new QwtPlot(this); plot->resize(600,400); plot->setTitle("数据显示图"); //设置y轴的位置及标尺 plot->setAxisScale(QwtPlot::yLeft,0.0,10.0); //设置x轴的位置及标尺 plot->setAxisScale(QwtPlot::xBottom,0.0,10.0); mainLayout->addWidget(plot); QwtPlotCanvas *canvas = new QwtPlotCanvas; canvas->setBorderRadius(10); plot->setCanvas(canvas); plot->setCanvasBackground(QColor("white")); QwtPlotGrid *grid = new QwtPlotGrid(); grid->setMajorPen( Qt::black, 0, Qt::DotLine ); grid->attach(plot); curve = new QwtPlotCurve; for(int i=0; i<10; i++) time[i] = i + 1; double value[10] = {6,1,4,8,5,2,1,3,2,10}; //x轴y轴数据及长度 curve->setSamples(time,value,10); //把曲线和图联系起来 curve->attach(plot); //从QObject的函数,应该是每隔一秒刷新一次MainWidnow,要想轻量级的显示可以使用QTimer startTimer(1000);}MainWindow::~MainWindow(){}//时间到的时候,自动触发的函数void MainWindow::timerEvent(QTimerEvent *event){ for(int i=0; i<9; i++) value[i] = value[i+1]; value[9] = qrand() % 10; curve->setSamples(time,value,10); plot->replot();}
mianwindow.cpp(只刷新图的部分)
public: MainWindow(QWidget *parent = 0); QwtPlot *plot; QwtPlotCurve *curve; ~MainWindow();private slots: void timerEvent();private: double time[10]; double value[10];
mainwindow.cpp
double value[10] = {6,1,4,8,5,2,1,3,2,10}; //x轴y轴数据及长度 curve->setSamples(time,value,10); //把曲线和图联系起来 curve->attach(plot); QTimer *time = new QTimer(); time->start(1000); connect(time,SIGNAL(timeout()),this,SLOT(timerEvent()));
//时间到的时候,自动触发的函数void MainWindow::timerEvent(){ for(int i=0; i<9; i++) value[i] = value[i+1]; value[9] = qrand() % 10; curve->setSamples(time,value,10); plot->replot();}
可以对线和点的样式进行设置,看下面的项目
- Qwt框架练习1
- Qwt框架(qwt-6.1 examples)学习
- 集合框架练习(1)
- QWT
- QWT
- qwt
- Qwt刻度尺系列解读---from Qwt-6.1.1
- 安装、使用 qwt 6.0.1
- qwt开发 1 unresolved externals
- 框架练习
- 练习自己搭建框架(1)BaseAction
- 框架整合搭建实战练习记录1
- QwtPlot解读---from Qwt-6.6.1
- QwtPlotItem解读---from Qwt-6.1.1
- QwtPlotLayout解读---from Qwt-6.1.1
- QwtMagnifier解读---from Qwt-6.1.1
- QwtLegend解读---from Qwt-6.1.1
- QWT的配置和使用(1)
- Excel表数据很少,内存占用很大
- 线段树求逆序数(模板)
- 102个快递编码的对照表
- ajax,json,跨域jsonp总结
- CSS之登录表单
- Qwt框架练习1
- javascript--history对象
- java中HashSet详解
- mysql 5.7中varchar 和 char的理解
- AndroidStudio buildgradle升级导致的兼容性问题
- 父类引用指向子类对象
- sql:decode()的用法
- JS正则密码验证
- 双线性插值算法原理及其实现