精华内容
下载资源
问答
  • qt 画曲线 代码

    2018-05-15 13:22:06
    qt画曲线图的测试代码,运行稳定可靠,希望有一定参考价值
  • QT画曲线图程序

    2017-07-02 14:49:17
    QT 将数组里的数据曲线
  • 基于QT曲线图绘制

    2018-12-28 09:49:23
    本工程是一个基于QT曲线图绘制,在没有调用Charts库的情况下,采用自绘的方式绘制的,简单实用,是一个完整的工程;如果编译环境正常的话,可以直接使用,注释也比较详细
  • qt中绘制曲线

    2018-12-11 09:18:59
    qt中绘制过指定点集的曲线 功能:1.过指定点集 2.绘制曲线 可能问题:曲线不够平滑
  • QT画曲线图源码

    2015-05-06 01:36:14
    曲线绘制时间过长、屏幕映射时会出现屏幕闪烁的现象,以及数据需要及时保存和回调查看的问题
  • 通过重写paintEvent函数来实现贝塞尔,同时可在界面上通过鼠标点击来绘制/选择节点,并且可拖动节点调节位置
  • QT画曲线程序

    热门讨论 2011-09-20 10:16:45
    QT画曲线
  • Qt实现动态曲线

    2017-02-26 20:30:27
    使用的是Qt4开发,经过实际的测试完全可以用,使用Qt5,只需简单的修改头文件也可以用。 在本人的博客中也有详细的程序解读,和开发的重要注意。
  • 随机生成一组数据,QT用Qpainter绘制实时曲线图最简单的折线图
  • 此demo是基于 Qt5.9 Qt Charts 绘制的曲线统计图,适用于初学者,下载源码可直接运行;文章里有详细说明(https://blog.csdn.net/weixin_45629870/article/details/108778754)
  • Qt简单曲线图绘制(Qt5.9 Qt Charts)

    千次阅读 多人点赞 2020-09-24 17:36:09
    (Qt简单曲线图绘制(源码) Qt5.9 Qt Charts)

    Qt简单曲线图绘制(Qt5.9 Qt Charts)

    效果图:
    在这里插入图片描述

    首先创建工程

    在这里插入图片描述工程建立以后进入Mainwindow.ui设计界面,如下图所示:
    在这里插入图片描述关键的控件和控件命名已经详细标出,照着弄就完事儿了。废话不多说上代码:
    在.pro 包含:QT += charts

    mainwindow.h 代码

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include <QtCharts/QChart>
    using namespace QtCharts;
    
    QT_BEGIN_NAMESPACE
    namespace Ui { class MainWindow; }
    QT_END_NAMESPACE
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        MainWindow(QWidget *parent = nullptr);
        ~MainWindow();
    
    private slots:
        void on_btnSlineColor_clicked();
    
        void on_btnSplinePointColor_clicked();
    
        void on_chkDataPoint_stateChanged(int arg1);
    
        void on_chkDataPointLabelVisible_stateChanged(int arg1);
    
    
    private:
        //创建光滑曲线序列
        void createQSplineSeries();
    private:
        Ui::MainWindow *ui;
        int i = 0;
        QList<QString *> m_charts;
        QStringList two;
        QStringList one;
        QStringList five;
    };
    #endif // MAINWINDOW_H
    
    

    mainwindow.cpp 代码

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QLineSeries>
    #include <QSplineSeries>
    #include <QValueAxis>
    #include <QCategoryAxis>
    #include <QColorDialog>
    
    MainWindow::MainWindow(QWidget *parent)
        : QMainWindow(parent)
        , ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        ui->tableWidget->setColumnCount(3);
        QStringList headText = QStringList() << QStringLiteral("星期") << QStringLiteral("最低温度(°C)") << QStringLiteral("最高温度(°C)");
        ui->tableWidget->setHorizontalHeaderLabels(headText);
        ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
        //设置行数
        ui->tableWidget->setRowCount(7);
    
        two <<"周一"<<"周二"<<"周三"<<"周四"<<"周五"<<"周六"<<"周七";
    
        one <<"4"<<"2"<<"5"<<"1"<<"5"<<"2"<<"5";
    
        five <<"11"<<"12"<<"18"<<"14"<<"15"<<"18"<<"17";
    
        for(int i=0;i<7;i++)
        {
            int col = 0;
            ui->tableWidget->setItem(i,col++,new QTableWidgetItem(two.at(i)));
            ui->tableWidget->setItem(i,col++,new QTableWidgetItem(one.at(i)));
            ui->tableWidget->setItem(i,col++,new QTableWidgetItem(five.at(i)));
        }
        createQSplineSeries();
    
    }
    
    void MainWindow::createQSplineSeries()
    {
    
        ui->chartViewQSpline->setRenderHint(QPainter::Antialiasing);
        ui->chartViewQSpline->chart()->setTitle(QStringLiteral("QSplineSeries演示"));
        ui->chartViewQSpline->chart()->setTheme(QChart::ChartThemeDark);
        //创建光滑曲线序列,并添加数据
        QSplineSeries *spLineSeries = new QSplineSeries;
        spLineSeries->setName(QStringLiteral("最高温"));
        for (int i = 0; i < ui->tableWidget->rowCount(); i++)
        {
            spLineSeries->append(i, ui->tableWidget->item(i, 2)->text().toInt());
        }
        ui->chartViewQSpline->chart()->addSeries(spLineSeries);
        //创建坐标轴
        QValueAxis *axisX = new QValueAxis;
        axisX->setRange(0, 6);
        axisX->setTickCount(7);
        axisX->setLabelsVisible(false);//x轴坐标显示
        QValueAxis *axisY = new QValueAxis;
        axisY->setRange(0, 40);
        ui->chartViewQSpline->chart()->setAxisX(axisX, spLineSeries);
        ui->chartViewQSpline->chart()->setAxisY(axisY, spLineSeries);
    
        //创建折现序列,并添加数据
        QLineSeries *lineSeries = new QLineSeries;
        lineSeries->setName(QStringLiteral("最低温"));
        for (int i = 0; i < ui->tableWidget->rowCount(); i++)
        {
            lineSeries->append(i, ui->tableWidget->item(i, 1)->text().toInt());
        }
        ui->chartViewQSpline->chart()->addSeries(lineSeries);
        ui->chartViewQSpline->chart()->setAxisX(axisX, lineSeries);
        ui->chartViewQSpline->chart()->setAxisY(axisY, lineSeries);
        //显示曲线的数据点
        lineSeries->setPointsVisible(true);
        spLineSeries->setPointsVisible(true);
        //图例
        ui->chartViewQSpline->chart()->legend()->setAlignment(Qt::AlignBottom);
    }
    
    void MainWindow::on_btnSlineColor_clicked()
    {//设置光滑曲线:线条颜色
        QLineSeries *lineSeries = (QLineSeries *)ui->chartViewQSpline->chart()->series().at(1);
        QColor color = lineSeries->pen().color();
        color = QColorDialog::getColor(color);
        QPen pen = lineSeries->pen();
        pen.setColor(color);
        lineSeries->setPen(pen);
    }
    
    void MainWindow::on_btnSplinePointColor_clicked()
    {//设置光滑曲线:数据点颜色
        QSplineSeries *splineSeries = (QSplineSeries *)ui->chartViewQSpline->chart()->series().at(0);
        QColor color = splineSeries->pen().color();
        color = QColorDialog::getColor(color);
        QPen pen = splineSeries->pen();
        pen.setColor(color);
        splineSeries->setPen(pen);
    }
    
    void MainWindow::on_chkDataPoint_stateChanged(int arg1)
    {//设置光滑曲线:数据点显示
        QLineSeries *lineSeries = (QLineSeries *)ui->chartViewQSpline->chart()->series().at(0);
        QSplineSeries *splineSeries = (QSplineSeries *)ui->chartViewQSpline->chart()->series().at(1);
        if (Qt::Checked == arg1)
        {
            lineSeries->setPointsVisible(true);
            splineSeries->setPointsVisible(true);
        }
        else
        {
            lineSeries->setPointsVisible(false);
            splineSeries->setPointsVisible(false);
        }
    }
    
    void MainWindow::on_chkDataPointLabelVisible_stateChanged(int arg1)
    {//设置光滑曲线:数据点标签显示
        QLineSeries *lineSeries = (QLineSeries *)ui->chartViewQSpline->chart()->series().at(0);
        QSplineSeries *splineSeries = (QSplineSeries *)ui->chartViewQSpline->chart()->series().at(1);
        if (Qt::Checked == arg1)
        {
            lineSeries->setPointLabelsVisible(true);
            splineSeries->setPointLabelsVisible(true);
        }
        else
        {
            lineSeries->setPointLabelsVisible(false);
            splineSeries->setPointLabelsVisible(false);
        }
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    

    下载地址:源代码下载
    觉得有用的小伙伴不要吝啬你们赞哟~()

    展开全文
  • QT画曲线的程序

    2012-09-09 21:07:06
    大家来看看,有关于QT画曲线的程序,给大家参考一下
  • QT绘制实时动态曲线

    热门讨论 2013-04-13 23:06:16
    QT编写实时动态曲线资料,可以作入门资料看一下
  • QT简单曲线图绘制(基于QChart)

    千次阅读 2020-08-12 22:02:49
    本例曲线图绘制使用QT的QChart模块实现(QT5.7及其以上版本才有此功能),自行封装了Chart类, 调用如下: .pro工程文件: #------------------------------------------------- # # Project created by QtCreator ...

    本例指定一系列离散点,可绘制曲线图,并可将图表嵌入QWidget中
    效果如下:
    在这里插入图片描述
    本例曲线图绘制使用QT的QChart模块实现(QT5.7及其以上版本才有此功能),自行封装了Chart类,
    调用如下:

    .pro工程文件:

    #-------------------------------------------------
    #
    # Project created by QtCreator 2020-08-12T20:05:22
    #
    #-------------------------------------------------
    
    QT       += core gui
    QT       += charts
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = QCharts_Test
    TEMPLATE = app
    
    DEFINES += QT_DEPRECATED_WARNINGS
    
    SOURCES += \
            main.cpp \
            mainwindow.cpp \
        chart.cpp
    
    HEADERS += \
            mainwindow.h \
        chart.h
    
    FORMS += \
            mainwindow.ui
    
    

    mainwindow.h文件:

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include "chart.h"
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
        Chart *chart;
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
        void initChart();
    
    private:
        Ui::MainWindow *ui;
    };
    
    #endif // MAINWINDOW_H
    
    

    mainwindow.cpp文件:

    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
        initChart();
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    //初始化图表
    void MainWindow::initChart()
    {
        //设置表头
        chart = new Chart(this,"历史数据");
        //设置坐标系
        chart->setAxis("X轴",0,100,11, "Y轴",0,20,11);
        //设置离散点数据
        QList<QPointF> pointlist = {QPointF(0,1), QPointF(10,2), QPointF(20,4), QPointF(30,8), QPointF(40,16), \
                                    QPointF(50,16), QPointF(60,8), QPointF(70,4), QPointF(80,2), QPointF(90,1),};
        //绘制
        chart->buildChart(pointlist);
        //为MainWindow的centralWidget添加一个布局
        QHBoxLayout *pHLayout = new QHBoxLayout(ui->centralWidget);
        //将chart添加到布局中
        pHLayout->addWidget(chart);
    }
    

    最后是Chart类的实现:

    chart.h

    #ifndef CHART_H
    #define CHART_H
    
    #include <QChartView>
    #include <QChart>
    #include <QSplineSeries>
    #include <QHBoxLayout>
    #include <QValueAxis>
    
    QT_CHARTS_USE_NAMESPACE
    class Chart : public QWidget
    {
        Q_OBJECT
        QChart *qchart;
        QChartView *chartview;
        QSplineSeries *series;
    
        QHBoxLayout *layout;
        QValueAxis *axisX;
        QValueAxis *axisY;
    
        QString chartname;
        //坐标轴参数
        QString xname;
        qreal xmin;
        qreal xmax;
        int xtickc;
        QString yname;
        qreal ymin;
        qreal ymax;
        int ytickc;
    
    public:
        Chart(QWidget* parent = 0, QString _chartname = "曲线图");
        ~Chart(){}
        void setAxis(QString _xname, qreal _xmin, qreal _xmax, int _xtickc, \
                     QString _yname, qreal _ymin, qreal _ymax, int _ytickc);
        void buildChart(QList<QPointF> pointlist);
    
    };
    #endif // CHART_H
    
    

    chart.cpp

    #include "chart.h"
    
    Chart::Chart(QWidget* parent, QString _chartname){
        setParent(parent);
        chartname = _chartname;
        series = new QSplineSeries(this);
        qchart = new QChart;
        chartview = new QChartView(qchart);
        layout = new QHBoxLayout(this);
        axisX = new QValueAxis(this);
        axisY = new QValueAxis(this);
        //在ui里面添加了一个Widget并把曲线图添加进去
        layout->addWidget(chartview);
        setLayout(layout);
        chartview->setRenderHint(QPainter::Antialiasing);//防止图形走样
    }
    
    void Chart::setAxis(QString _xname, qreal _xmin, qreal _xmax, int _xtickc, \
                 QString _yname, qreal _ymin, qreal _ymax, int _ytickc){
        xname = _xname; xmin = _xmin; xmax = _xmax; xtickc = _xtickc;
        yname = _yname; ymin = _ymin; ymax = _ymax; ytickc = _ytickc;
    
        axisX->setRange(xmin, xmax);    //设置范围
        axisX->setLabelFormat("%u");   //设置刻度的格式
        /************************************
            %u 无符号十进制整数
            %s 字符串
            %c 一个字符
            %d 有符号十进制整数
            %e 浮点数、e-记数法
            %f 浮点数、十进制记数法
            %s 字符串
        ****************************************/
            axisX->setGridLineVisible(true);   //网格线可见
            axisX->setTickCount(xtickc);       //设置多少个大格
            axisX->setMinorTickCount(1);   //设置每个大格里面小刻度线的数目
            axisX->setTitleText(xname);  //设置描述
            axisY->setRange(ymin, ymax);
            axisY->setLabelFormat("%u");
            axisY->setGridLineVisible(true);
            axisY->setTickCount(ytickc);
            axisY->setMinorTickCount(1);
            axisY->setTitleText(yname);
            qchart->addAxis(axisX, Qt::AlignBottom); //下:Qt::AlignBottom  上:Qt::AlignTop
            qchart->addAxis(axisY, Qt::AlignLeft);   //左:Qt::AlignLeft    右:Qt::AlignRight
    }
    
    void Chart::buildChart(QList<QPointF> pointlist)
    {
        //创建数据源
        series->setPen(QPen(Qt::blue,3,Qt::SolidLine));
        series->clear();
        for(int i=0; i<pointlist.size();i++)
            series->append(pointlist.at(i).x(), pointlist.at(i).y());
    
        qchart->setTitle(chartname);
        qchart->setAnimationOptions(QChart::SeriesAnimations);//设置曲线动画模式
        qchart->legend()->hide(); //隐藏图例
        qchart->addSeries(series);//输入数据
        qchart->setAxisX(axisX, series);
        qchart->setAxisY(axisY, series);
    }
    
    
    展开全文
  • Qt画sin、cos曲线

    2019-07-14 11:08:06
    利用Qt,带有界面,出sin、cos曲线,傅里叶变换,代码清晰
  • 贝塞尔曲线c++实现。鼠标右键创建端点,左键移动端点,中键回溯。可以用vs或QT creator打开。这是完整的项目文件夹,保证编译通过。新版更新了优化了一下代码,解决了右键拖动经常拖不动的问题。
  • 比官网上19个demo,还要多的示例
  • 应用QT和贝塞尔曲线绘制复杂曲线
  • Qt做的曲线显示控件

    2011-07-19 19:51:06
    自己用Qt写得曲线显示控件,可以放大,缩小显示,使用方便只需给出曲线的X轴数值和Y轴数值即可。
  • qt出漂亮的函数曲线

    千次阅读 热门讨论 2019-08-06 15:33:13
    准备画家,先出坐标轴 public: explicit Widget(QWidget *parent = nullptr); void Paint(); void Connext(); //实现 void Widget::Paint() { QPainter painter(&image); painter.setRenderHint...

    二次函数在这里插入图片描述在这里插入图片描述

    1. 准备画布,填充画布颜色为白色
    //头文件中
    private:
        Ui::Widget *ui;
        QImage image;
        QString line;
    //实现文件中
    Widget::Widget(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::Widget)
    {
        line="";
        ui->setupUi(this);
        image=QImage(1200,1200,QImage::Format_RGB32);
        QColor backColor=qRgb(255,255,255);
        image.fill(backColor);
    }
    
    
    1. 准备画家,先画出坐标轴
    public:
        explicit Widget(QWidget *parent = nullptr);
        void Paint();
        void Connext();
    
    //实现
    void Widget::Paint()
    {
        QPainter painter(&image);
        painter.setRenderHint(QPainter::Antialiasing,true);
        int pointx=450,pointy=450;
        int width=800,height=800;
        painter.drawRect(5,5,1200-10,1200-10);
        painter.drawLine(pointx-width/2+50,pointy,pointx+width/2+100,pointy);
        painter.drawLine(pointx,pointy-height/2,pointx,pointy+height/2);
    }
    
    
    1. 描点,把点存储在队列中

    描点时,横坐标根据你所给的表达式给出,比如如果是对数函数,从0.1开始往后给出10个左右横坐标。纵坐标需要根据表达式计算,我们只需要把表达式里面的x换成具体的值,就可以计算出纵坐标。

    QList<QPointF>points=creatPoints(line);		//creatPoints()是一个函数,
    返回需要的数据点,line就是输入的表达式。
    
    //具体实现还有怎么计算数据点有些复杂,这里略过,若想尝试的话,可以自己自定义一些数据点。
    

    4.根据所给点绘制曲线
    这里要用到QPainterPath类,顾名思义,它可以根据你所给的点,一段一段的绘制曲线。

      QList<QPointF>points=creatPoints(line);
          QPainterPath path(points[0]);
          for(int i=0;i<points.size()-1;++i)
          {
              QPointF sp=points[i];
              QPointF ep=points[i+1];
              QPointF c1=QPointF((sp.x()+ep.x())/2,(sp.y()+ep.y())/2);
              QPointF c2=c2;
              path.cubicTo(c1,c2,ep);			//这个函数就是用来绘制曲线的。
              //第一个参数和第二个参数都是控制点(百度贝赛尔曲线)
              //第三个参数endpoint,是这小段曲线的终点
              //起点是按照你的队列顺序的前一个节点
              //这里将c1和c2设置成一样的是因为这小段曲线凹凸性是一样的。
    
          }
                  QPainter painter(&image);
                  painter.setRenderHint(QPainter::Antialiasing,true);		//防锯齿
                  painter.setPen(QPen(Qt::black,10));
                  painter.translate(450,450);
                  painter.drawPath(path);
    

    这样大致思路就出来了。

    展开全文
  • QT画曲线

    千次阅读 2017-10-10 10:13:27
    QCustomPlot http://www.qcustomplot.com/

    2D图形:

    QCustomPlot http://www.qcustomplot.com/

    3D图形:

    qwtplot3d http://blog.csdn.net/guoguo1127/article/details/51756123

    展开全文
  • 使用QT中的将excel中的数据曲线
  • QT画贝塞尔曲线

    2020-12-17 14:28:02
    QT绘制贝塞尔曲线 刚开始学习计算机图形学,觉得很有趣,我的水平不高,代码可供参考。 部分代码 typedef struct { float X; float Y; } PointF; PointF bezier_interpolation_func(float t, PointF *...
  • QT画动态曲线

    2016-07-30 18:35:48
    QT用提升法动态曲线的方法
  • QT5 实时曲线绘制

    2018-08-05 16:08:22
    QT5中绘制实时曲线,利用随机数据产生数据绘制,最长记录时间为30分钟。
  • QT绘制直方图BarChart QT绘制饼状图PieChart QT绘制折线图LineChart QT绘制散点图ScatterChart QT绘制面积图AreaChart 0.创建ui窗口: 主要就是拖拉一个Horizontal Layout 1.创建Qchart对象: QChart *chart = new...
  • QT中利用QCustomPlot类画曲线图,程序中画了四条曲线,x,y轴自己赋值(若要接收外部数据需要扩展),每条曲线可以设置颜色和粗细以及不同的点标记,每条曲线可以有说明。
  • 实现QtCharts曲线图移动和缩放。这个资源描述怎么就要求要50个字了嘿
  • Qt绘制曲线

    万次阅读 2016-08-19 08:43:03
    引言 应易和仓储系统需求,使运输车在行驶过程与刹车过程中运行得平稳,下位机通过无极变速控制应运而生...原来我也可以出美丽平滑的余弦曲线。 1 坐标转换 (1)坐标系的认识 在绘制曲线之前,先要对坐
  • QT系列之曲线图绘制(推荐QCustomPlot)

    千次阅读 多人点赞 2020-04-12 11:17:36
    一个好的曲线图应该具有的功能: 1.美观——背景,线条颜色,线条宽度,字体,边框间距,坐标轴间隔; 2.以鼠标为中心进行缩放,以及重置曲线图; 3.显示鼠标点所在坐标值; 4.图中曲线的名称图例; 5.支持拖拽...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,048
精华内容 1,619
关键字:

qt画曲线

友情链接: 用户手册.zip