QT下将数组里的数据画成曲线
来源:互联网 发布:手机淘宝改支付宝绑定 编辑:程序博客网 时间:2024/05/18 03:04
Qt画图要用到QCustomPlot,首先下载QCustomPlot
1.新建QT项目工程,基类为mainwindow
2.将下载好的文件夹里面的头文件qcustomplot.h和源文件qcustomplot.cpp复制粘贴到工程文件夹下。然后在新建的QT工程中添加这两个文件。
3.在工程的.pro文件的第9行末尾加入printsupport 即:
greaterThan(QT_MAJOR_VERSION,4):QT +=widgets printsupport
4.在新建的QT工程中的ui里添加QCustomPlot
①进入ui设计模式,输入widget查找,从搜索结果中.向主窗口中添加一个widget区域,对着所添加的widget区域点击右键,选择“提升为”按钮。
②提升类名称输入“QCustomPlot”,点击添加。
③选中QCustomPlot,点击提升按钮,我们创建的widget就被提升为QCustomPlot类了。
④编译一下,没有错误就可以使用QCustomPlot了,如果出现undefined reference的错误,一般是漏做了上面某步骤
5.开始编程
以下为mianwindow.h的代码:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include "qcustomplot.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
double num1[100];
double num2[100];
int n;
void Graph_Show(QCustomPlot *customPlot);
public slots:
void Graph_Show();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
以下为mainwindow.cpp的代码
#include "mainwindow.h"#include "ui_mainwindow.h"#include <QVector>#include <QTime>#include <QTimer>#include <time.h>MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this); QTimer *timer = new QTimer(this); timer->start(500); connect(timer,SIGNAL(timeout()),this,SLOT(Graph_Show()));}MainWindow::~MainWindow(){ delete ui;}void MainWindow::Graph_Show(){ QTime t; t=QTime::currentTime(); qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime())); n=qrand()%50; Graph_Show(ui->widget);}void MainWindow::Graph_Show(QCustomPlot *CustomPlot){ QVector<double> temp(100); QVector<double> temp1(100); QVector<double> temp2(100); srand( (unsigned)time(NULL) );//设置一个随机函数 for(int i=0;i<100;i++) { num1[i]=rand()%101; num2[i] =rand()%101+100 ; } for(int i=0;i<100;i++) { temp[i] = i; temp1[i] =num1[i]; temp2[i]=num2[i]; } //设置画布颜色 QLinearGradient plotGradient; //lotGradient.setStart(0, 0); //plotGradient.setFinalStop(0, 350); plotGradient.setColorAt(0, QColor(80, 80, 80)); //plotGradient.setColorAt(1, QColor(50, 50, 50)); ui->widget->setBackground(plotGradient); //设置坐标颜色/坐标名称颜色 ui->widget->xAxis->setLabelColor(Qt::white);//文字颜色 ui->widget->yAxis->setLabelColor(Qt::white); ui->widget->xAxis->setTickLabelColor(Qt::white);//坐标轴数字颜色 ui->widget->yAxis->setTickLabelColor(Qt::white); ui->widget->xAxis->setBasePen(QPen(Qt::white, 1));//坐标轴颜色及宽度 ui->widget->yAxis->setBasePen(QPen(Qt::white, 1)); ui->widget->xAxis->setTickPen(QPen(Qt::white, 1));//主刻度 ui->widget->yAxis->setTickPen(QPen(Qt::white, 1)); ui->widget->xAxis->setSubTickPen(QPen(Qt::white, 1));//副刻度 ui->widget->yAxis->setSubTickPen(QPen(Qt::white, 1)); //设置属性可缩放,移动等 ui->widget->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectAxes | QCP::iSelectLegend | QCP::iSelectPlottables); CustomPlot->addGraph();//添加一条曲线 CustomPlot->graph(0)->setPen(QPen(Qt::green)); //0是曲线序号,添加的第一条是0,设置曲线颜色 CustomPlot->graph(0)->setData(temp,temp1); //输出各点的图像,x和y都是QVector类 CustomPlot->xAxis->setLabel("x");//x轴的文字 CustomPlot->yAxis->setLabel("y");//y轴的文字 CustomPlot->xAxis->setRange(0,100);//x轴范围 CustomPlot->yAxis->setRange(-100,200);//y轴范围 CustomPlot->replot();//重绘 CustomPlot->addGraph();//添加第二条曲线 CustomPlot->graph(1)->setPen(QPen(Qt::yellow)); //1是曲线序号,添加的第二条是1,设置曲线颜色 CustomPlot->graph(1)->setData(temp,temp2);
}
其他地方不改变,运行后结果如图:
代码下载:http://download.csdn.net/detail/weiwen12138/9886622
QCustomPlot下载: http://download.csdn.net/detail/weiwen12138/9886626
- QT下将数组里的数据画成曲线
- vc平台下将数组里的数据画成曲线
- 将控件画成圆角的效果(Delphi)
- 将控件画成圆角的效果(Delphi)
- QT编写的数据转曲线工具
- QT如何将QlineEdit里的QString字符串存储到unsigned char 数组中
- 使用FusionCharts 根据数据库里的数据绘制曲线
- Qt中把纯文本里的int型数据转化为int数组(矩阵)
- 将数组里的成员升序排列
- QT画曲线以及QWT在Windows下的配置
- qt下bezier曲线的绘制(C++)
- qt上位机,将下位机发送数据解码显示实时曲线
- C++里将float数据转换到wchar_t数组中
- Qt将文本框的内容写到文件里
- java随机抽取数组里的数据?
- 怎样把ListCtrl画成圆角的
- qt数据写入文件和读取文件里的数据
- 修改qt QTableView里的modal数据并更新数据
- 7.2 Hibernate:内置生成器 -- foreign
- 优化设计-任务间通信-用队列而不用缓冲区
- 《剑指offer》斐波那契数列
- 1250: 跑跑数
- Java数据类型
- QT下将数组里的数据画成曲线
- C++ limits头文件的用法(numeric_limits)
- dibian9安装java8
- PHP header 的几种用法
- HDU5922-Minimum’s Revenge
- Android 图片高斯模糊解决方案
- OpenWrt 编译及batman-adv组件选择(for Netgear WNDR3800)
- 多线程
- 纯真IP地址库合并