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