1. 程式人生 > >QCustomplot學習使用分享

QCustomplot學習使用分享

interact ali 工程 setfont ott 工程文件 object spa 名稱

同時發布在http://blog.csdn.net/laixuepu/article/details/78825257

QCustomplot學習使用分享

QCustomplot網上和例子都是在資源和頭文件中加入qcustomplot.h和qcustomplot.cpp,然後在.ui中添加Widget,然後提升為QCustomplot,然後重新命名,在mainwindow中調用,很少有使用純代碼添加的。純代碼的好處肯定不用我講吧。下邊就將我的例子分享給大家,供自己以後能找到,也分享給大家。

1.首先新建工程,

一路下一步,然後選擇QWidget

將從官網下載的QCustomplot文件中的以QCustomplot.h,QCustomplot.cpp下兩個文件拷到工程文件夾下

點擊工程右鍵,添加現有文件,將這兩個文件添加到工程。

然後將以下代碼復制到Widget.h跟Widget.cpp文件內。運行。

Widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include"qcustomplot.h"

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    void zPlotterWidgetInit();
    ~Widget();

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

Widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
        ui->setupUi(this);
       setGeometry(QRect(30,30,650,450));
        zPlotterWidgetInit();
}

void Widget::zPlotterWidgetInit()
{
    QCustomPlot *preplot = new QCustomPlot(this);
    //設置繪圖窗口大小,以下兩個都可以
    //preplot->setFixedSize(480,300);
    preplot->setGeometry(QRect(30,30,650,350));

    //可拖拽+可滾輪縮放
    preplot->setInteractions(QCP::iRangeDrag | QCP::iRangeZoom | QCP::iSelectPlottables);

    preplot->xAxis->setVisible(true);       //設置需要顯示的坐標軸x
    preplot->yAxis->setVisible(true);       //設置需要顯示的坐標軸y
    preplot->xAxis2->setVisible(true);      //設置需要顯示的坐標軸x2
    preplot->yAxis2->setVisible(true);      //設置需要顯示的坐標軸y2

    preplot->xAxis->setRange(0, 100);       //x軸的範圍
    preplot->yAxis->setRange(0, 10);        //y軸的範圍
    preplot->xAxis2->setRange(0, 100);      //x2軸的範圍
    preplot->yAxis2->setRange(0, 10);       //y2軸的範圍

    preplot->xAxis->setLabel("xAxis1");       //x1軸名稱
    preplot->yAxis->setLabel("yAxis1");       //y1軸名稱
    preplot->xAxis2->setLabel("xAxis2");       //x2軸名稱
    preplot->yAxis2->setLabel("yAxis2");       //y2軸名稱

    preplot->xAxis->setTickLabels(true);       //x1軸坐標刻度
    preplot->yAxis->setTickLabels(true);       //y1軸坐標刻度
    preplot->xAxis2->setTickLabels(true);       //x2軸坐標刻度
    preplot->yAxis2->setTickLabels(true);       //y2軸坐標刻度

//為坐標軸添加箭頭

//    preplot->xAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);
//    preplot->yAxis->setUpperEnding(QCPLineEnding::esSpikeArrow);
//    preplot->xAxis2->setUpperEnding(QCPLineEnding::esSpikeArrow);
//    preplot->yAxis2->setUpperEnding(QCPLineEnding::esSpikeArrow);

//坐標系反轉
//     preplot->xAxis->setRangeReversed(true);
//     preplot->yAxis->setRangeReversed(true);
//     preplot->xAxis2->setRangeReversed(true);
//     preplot->yAxis2->setRangeReversed(true);





    preplot->addGraph();
    preplot->addGraph();
    preplot->graph(0)->setPen(QPen(Qt::blue));  //曲線1顏色
    preplot->graph(0)->setName(("name1"));      //曲線1名稱
    preplot->graph(1)->setPen(QPen(Qt::red));   //曲線2顏色
    preplot->graph(1)->setName(("name2"));      //曲線2名稱

    preplot->legend->setVisible(true);  //顯示圖例縮略圖
    preplot->legend->setFont(QFont("Helvetica",9));
    preplot->legend->setBrush(QBrush(QColor(255,255,255,210)));//210透明度
    preplot->legend->setSelectableParts(QCPLegend::spItems);
    preplot->axisRect()->insetLayout()->setInsetAlignment(0, Qt::AlignTop|Qt::AlignRight);//標簽位置



    for(double i=0;i<100;i++)
        {
            preplot->graph(0)->addData(i, i/50);
            preplot->graph(1)->addData(i, i*i/50);
        }

}

Widget::~Widget()
{
    delete ui;
}

運行,運行結果如下圖

如果有什麽不對的地方希望大家指正。

然後QCustomplot還有很多功能,此處只是剛剛入門的一些東西。自己編寫,實際可用。

QCustomplot學習使用分享