QCustomplot的使用以及编译动态链接库的过程

#ifndef _HLM_GRAPH_H_
#define _HLM_GRAPH_H_
#include <qcustomplot.h>

class hlm_temp_Graph : public QWidget
{
public:
    explicit hlm_temp_Graph(QWidget *parent = 0);

    ~hlm_temp_Graph();

    bool set_XY_Vector_value(QVector<double> &, QVector<double> &);
private:
    QCustomPlot *customplot;
};

#endif // HLM_GRAPH_H
#include "hlm_graph.h"
#include <QPushButton>

hlm_temp_Graph::hlm_temp_Graph(QWidget *parent) : QWidget(parent)
{
    customplot = new QCustomPlot(this);
    this->resize(800, 480);
    customplot->resize(350, 130);
    customplot->move(440, 310);
}

bool hlm_temp_Graph::set_XY_Vector_value(QVector<double> &X_Vectorcount, QVector<double> &Y_Vectortemp)
{
    QVector<double> Y_tempTickVertor(7); //y轴温度大刻度数组

    for ( int i = 0; i < Y_tempTickVertor.size(); i++)
    {
        Y_tempTickVertor[i] = i * 5;
    }

    for ( int i = 0; i < X_Vectorcount.size(); i++ )
    {
        X_Vectorcount[i] = i + 1;   //将来用来代表x轴上第几次采集温度的次数
    }

    QCPGraph *graph1 = customplot->addGraph();

    graph1->setData(X_Vectorcount, Y_Vectortemp);   //设置曲线上关联的数据,温度次数数组,温度值数组

    customplot->yAxis->setRange(0, 30);     //y轴的范围 0-30 摄氏度
    customplot->xAxis->setRange(1, X_Vectorcount.size());     //x轴的范围 1-20次

    customplot->xAxis->setAutoTicks(false); //x轴设置为不自动提供刻度位置
    customplot->yAxis->setAutoTicks(false); //y轴设置为不自动提供刻度位置

    customplot->xAxis->setTickVector(X_Vectorcount);   //x轴的刻度点,使用count数组中的刻度
    customplot->yAxis->setTickVector(Y_tempTickVertor);   //y轴的刻度点,使用tempTickVertor数组中的刻度点

    customplot->xAxis->setLabel(QString::fromUtf8("采集/次")); //设置x轴的标签名字
    customplot->yAxis->setLabel(QString::fromUtf8("温度/℃")); //设置y轴的标签名字

    //graph1->setPen(QPen(QColor(255, 74, 15), 2));   //设置曲线本身的颜色 2为占两个像素
    graph1->setPen(QPen(Qt::NoPen));                  //设置曲线本身颜色不可见

    graph1->setBrush(QColor(255, 116, 21, 125));        //设置graph1曲线覆盖面积的颜色 125为透明度,透明度上限为255

    customplot->xAxis->setSubTickPen(QPen(Qt::NoPen));  //设置x轴中小刻度没有画笔颜色,则小刻度的本身标线看不到
    customplot->yAxis->setSubTickPen(QPen(Qt::NoPen));  //设置y轴中小刻度没有画笔颜色,则小刻度的本身标线看不到

    customplot->xAxis->grid()->setPen(QPen(Qt::NoPen)); //设置x轴绘制网格线颜色的笔(大刻度位置对应的网格线)Qt::NoPen表示没有画笔颜色,则x轴大刻度位置的网格线看不到
    customplot->yAxis->grid()->setPen(QPen(QColor(227, 227, 227), Qt::SolidLine));  //设置y轴大刻度线位置对应网格线的颜色,Qt::SolidLine表示网格线为实线

    QLinearGradient plotGradient;       //线性渐变画笔
    plotGradient.setStart(0, 310);        //设置线性渐变的起点
    plotGradient.setFinalStop(0, 440);  //设置线性渐变的结束点

    plotGradient.setColorAt(0, QColor(243, 243, 243)); //设置线性渐变颜色的起点的颜色
    plotGradient.setColorAt(1, QColor(50, 50, 50)); //设置线性渐变颜色的终点的颜色,起点和终点之间的颜色用0的颜色到1的颜色进行渐变,0和1表示整体的起始位置和结束位置
    customplot->setBackground(plotGradient);    //设置背景色为该线性渐变的颜色
}

hlm_temp_Graph::~hlm_temp_Graph()
{
    delete customplot;
}
#include "mainwindow.h"
#include <QApplication>
#include "hlm_graph.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

//    MainWindow w;

//    w.show();

    QVector<double> X_Vectorcount(20), Y_Vectortemp(20); //Vectorcount温度次数数组,Vectortemp温度数组,tempTickVertor y轴温度大刻度数组
    Y_Vectortemp[0] = 20.5;
    Y_Vectortemp[1] = 22.5;
    Y_Vectortemp[2] = 22.5;
    Y_Vectortemp[3] = 25.5;
    Y_Vectortemp[4] = 28.5;
    Y_Vectortemp[5] = 26.5;
    Y_Vectortemp[6] = 23.5;
    Y_Vectortemp[7] = 21.5;
    Y_Vectortemp[8] = 25.5;
    Y_Vectortemp[9] = 26.5;
    Y_Vectortemp[10] = 27.5;
    Y_Vectortemp[11] = 25.5;
    Y_Vectortemp[12] = 23.5;
    Y_Vectortemp[13] = 24.5;
    Y_Vectortemp[14] = 24.5;
    Y_Vectortemp[15] = 24.5;
    Y_Vectortemp[16] = 26.5;
    Y_Vectortemp[17] = 26.5;
    Y_Vectortemp[18] = 27.5;
    Y_Vectortemp[19] = 27.5;

    hlm_temp_Graph temp_grap;
    temp_grap.set_XY_Vector_value(X_Vectorcount, Y_Vectortemp);

    temp_grap.show();

    return a.exec();
}

前提是从http://www.qcustomplot.com/index.php/support/documentation下载QCustomPlot - v1.0.zip将qcustomplot.cpp qcustomplot.h放入到Qt的工程中。

如果想要有其对应的ui控件,在ui设计中,选择一个Widget组件,然后将Widget组件提升为QCustomPlot即可,之后就可以ui->customplot形式去操作这个Qcustomplot的了

编译动态链接库的方法:

去官方网站http://www.qcustomplot.com/index.php/support/documentation下载QCustomPlot-sharedlib.tar.gz,根据自己的版本需要进行下载。

如果要编译成arm-linux版本的动态连接库.so形式的,我使用的方法是首先确定你的交叉编译工具链是arm-linux-gcc的,然后将下载下来的QCustomPlot-sharedlib.tar.gz放入到虚拟机中除了共享目录下的一个目录中,之后将qcustomplot.cpp qcustomplot.h放入到和QCustomPlot-sharedlib.tar.gz所在的同目录下,然后解压QCustomPlot-sharedlib.tar.gz,进入sharedlib-compilation目录中,先qmake,然后make,之后GNU/LINUX使用的.so动态链接库就出来了,之后使用cp *so* xxx/ -rdf 的方式将动态链接库拷贝到除了共享目录外的一个目录下,然后压缩成压缩包,之后放入到文件夹形式的文件系统中,解压即可。rdf是为了让符号连接被拷贝过后还是符合连接。

时间: 2024-08-23 20:38:34

QCustomplot的使用以及编译动态链接库的过程的相关文章

gcc编译动态链接库

以下是windows环境下用gcc编译动态链接库的尝试过程. 环境准备 编译使用的MinGW,64位的官网可以找到下载地址. 项目建立及代码编写 在任意地方新建一个目录,保存这个项目,然后新建一个c源程序文件main.c,输入程序. 编译 用控制台输入以下命令编译动态链接库 gcc -shared -Wall -o main.dll main.c

linux下的APK反编译软件及过程介绍

需要工具: 1.apktool apk打包工具 下载地址:http://android-apktool.googlecode.com/files/apktool1.5.2.tar.bz2 安装:直接解压即可,是一个apktool.jar文件,通过 $java -jar apktool.jar 来运行,依赖于java运行环境 2.dex2jar dex转化jar工具 下载地址:http://dex2jar.googlecode.com/files/dex2jar-0.0.9.15.zip 安装:直

C++编译与链接(1)-编译与链接过程

大家知道计算机使用的一系列的1和0 那个一个C++语言程序又是如何从一个个.h和.cpp文件变成包含1和0的可执行文件呢? 可以认为有以下的几个阶段 源程序->预处理->编译和优化->生成目标文件->链接->可执行文件 1.预处理 C++的预处理是指在C++程序源代码被编译之前,由预处理器对C++程序源代码进行的处理.这个过程并不对程序的源代码进行解析. 这里的预处理器(preprocessor)是指真正的编译开始之前由编译器调用的一个独立程序. 预处理器主要负责以下的几处

mingw编译ffmpeg+x265过程记录

mingw编译ffmpeg+x265过程记录 email: [email protected] 工作环境 OS:windows 7 1.相关资源下载 Ffmpeg-2.3     http://ffmpeg.org/releases/ffmpeg-2.3.3.tar.bz2 X265-1.3下载  https://bitbucket.org/multicoreware/x265/wiki/Home http://ffmpeg.zeranoe.com/builds/source/external_

Android系统开发(1)——GCC编译器的编译和安装过程

GCC编译器介绍 GCC编译器(GNG C Compiler)是GNU项目中符合ANSI C标准的编译系统,能够编译C  C++  Object C等语言编写的程序,同时GCC也是一个交叉编译器,特别使用于不同平台的嵌入式开发. GNU: GNU是"GNU is Not Unix"的递归缩写,1984年,史托曼开始GNU项目,这个项目的目的是创建一个自由,开放的Unix操作系统(Free UNIX),刚开始史托曼参考UNIX上面的软件,开发出功能类似的软件,在开发期间并没有看其他软件的

C++ 编译,运行过程 详解。

要更深入了解C++, 必须要知道一个程序从开始到结束都干了些什么, 怎么干的. 所以我从C++编译到运行过程,解析下程序是怎么跑的. 首先,初略的说一下之前C++的编译过程,C++编译过程包括预编译->汇编->编译->链接.称为一个可执行文件.(Windows平台下为.exe文件). 预编译主要展开包含的头文件,宏定义等操作.例如一个简单的main程序,编译预编译后,的文件对比.   可以看到里面的宏已经被去掉了.如果定了那个宏,那么宏里面的内容也会显示出来.头文件也是,如果你包含了你一

Ambari部署,编译,打包过程中遇到的问题

Ambari部署,编译,打包过程中遇到的问题 1.错误: [ERROR] Failed to execute goal com.github.goldin:copy-maven-plugin:0.2.5:copy (create-archive) on project ambari-agent: Processing <resource> [Target path(s) [/home/bdms/workspacebaribari-agent/targetb], directory [http:

C++ 编译,执行过程 具体解释。

要更深入了解C++, 必需要知道一个程序从開始到结束都干了些什么, 怎么干的. 所以我从C++编译到执行过程,解析下程序是怎么跑的. 首先,初略的说一下之前C++的编译过程.C++编译过程包含预编译->汇编->编译->链接.称为一个可运行文件.(Windows平台下为.exe文件). 预编译主要展开包括的头文件,宏定义等操作.比如一个简单的main程序,编译预编译后,的文件对照. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6

android的编译和运行过程深入分析

android的编译和运行过程深入分析 作者: 字体:[增加 减小] 类型:转载 首先来看一下使用Java语言编写的Android应用程序从源码到安装包的整个过程,此过程对了解android的编译和运行过程有很大的帮助 首先来看一下使用Java语言编写的Android应用程序从源码到安装包的整个过程,示意图如下,其中包含编译.链接和签名等: (1)使用aapt工具生成R.java文件 可以先通过搭建好的Eclipse开发环境创建一个未编译的Android工程,记的一定要将Eclipse中Proj