惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
罗磊的独立博客
T
Tailwind CSS Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Jina AI
Jina AI
V
V2EX
美团技术团队
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
月光博客
月光博客
量子位
MyScale Blog
MyScale Blog
G
Google Developers Blog
M
MIT News - Artificial intelligence
L
LangChain Blog
Microsoft Azure Blog
Microsoft Azure Blog
Recent Announcements
Recent Announcements
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
有赞技术团队
有赞技术团队
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
D
DataBreaches.Net
云风的 BLOG
云风的 BLOG
B
Blog

博客园 - 西北逍遥

实验启动指令 yolov8-pose监测人体关节并保存关节坐标 osg3.6绘制半球体 kinova jaco2 机械臂控制器故障灯闪烁(双绿灯)问题解决方法 IFC标准在学术界的研究与发展历程:从理论探索到产业实践的全面梳理IFC标准在学术界的研究与发展历程:从理论探索到产业实践的全面梳理 BIM的“普通话”:解密IFC标准如何重塑建筑行业 IfcCrewResource Qt重置 Brush pyqt 操作mysql数据库 泵仿真 Qt折线的显示与隐藏 c++ Qt绘制传热云图 livox mid-70采集点云数据 随机配色 学习:LED灯闪烁 win10安装neo4j-community-3.5.7-windows win10安装MongoDB 3.0.15 Community python把图片合并成gif图 ubuntu20.04测试cuda start.bat Djstra求解最短路径
Qt绘制折线
西北逍遥 · 2025-12-17 · via 博客园 - 西北逍遥
#include <QApplication>
#include <QtCharts/QChartView>
#include <QtCharts/QLineSeries>
#include <QtCharts/QValueAxis>
#include <QFont>
#include <QToolTip>
#include <cmath>

QT_CHARTS_USE_NAMESPACE

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

    // 创建图表框架
    QChartView *chartView = new QChartView;
    QChart *chart = new QChart();
    chart->setTitle(u8"多组数据折线图示例");
    QFont titleFont("Arial", 14, QFont::Bold);
    chart->setTitleFont(titleFont);
    chartView->setChart(chart);

    // 创建第一组折线序列
    QLineSeries *series0 = new QLineSeries();
    series0->setName(u8"Sin曲线");
    chart->addSeries(series0);
    // 为第一组序列添加数据点
    for (double i = 0; i < 10; i=i+0.1) {
        qreal t = i;
        qreal y1 = std::sin(t * 0.5) * 10;
        series0->append(t, y1);
    }

    // 创建第二组折线序列
    QLineSeries *series1 = new QLineSeries();
    series1->setName(u8"Cos曲线");
    chart->addSeries(series1);
    // 为第二组序列添加数据点
    for (double i = 0; i < 10; i = i + 0.1) {
        qreal t = i;
        qreal y2 = std::cos(t * 0.5) * 10;
        series1->append(t, y2);
    }


    // 创建第三组折线序列
    QLineSeries *series3 = new QLineSeries();
    series3->setName(u8"Cos曲线");
    chart->addSeries(series3);
    // 为第二组序列添加数据点
    for (double i = 0; i < 10; i = i + 0.1) {
        qreal t = i;
        qreal y2 = std::cos(t * 0.5) * 5;
        series3->append(t, y2);
    }

    // 创建坐标轴
    QValueAxis *axisX = new QValueAxis;
    axisX->setRange(0, 10);
    axisX->setTitleText("time (secs)");
    QValueAxis *axisY = new QValueAxis;
    axisY->setRange(-15, 15);
    axisY->setTitleText("value");

    // 为序列设置坐标轴
    chart->setAxisX(axisX, series0);
    chart->setAxisY(axisY, series0);
    chart->setAxisX(axisX, series1);
    chart->setAxisY(axisY, series1);
    chart->setAxisX(axisX, series3);
    chart->setAxisY(axisY, series3);

    //
    QObject::connect(series0, &QLineSeries::hovered, [](const QPointF &point, bool state) {
        if (state) {
            QToolTip::showText(QCursor::pos(), QString("X: %1\nY: %2").arg(point.x()).arg(point.y()));
        }
        else {
            QToolTip::hideText();
        }
    });
    //
    QObject::connect(series1, &QLineSeries::hovered, [](const QPointF &point, bool state) {
        if (state) {
            QToolTip::showText(QCursor::pos(), QString("X: %1\nY: %2").arg(point.x()).arg(point.y()));
        }
        else {
            QToolTip::hideText();
        }
        });
    //
    QObject::connect(series3, &QLineSeries::hovered, [](const QPointF &point, bool state) {
        if (state) {
            QToolTip::showText(QCursor::pos(), QString("X: %1\nY: %2").arg(point.x()).arg(point.y()));
        }
        else {
            QToolTip::hideText();
        }
        });
    //
    // 设置图表主题和图例
    chart->setTheme(QChart::ChartThemeBlueCerulean);
    chart->legend()->setVisible(true);
    chart->legend()->setAlignment(Qt::AlignBottom);

    // 显示图表
    chartView->setRenderHint(QPainter::Antialiasing);
    chartView->resize(800, 600);
    chartView->show();

    return a.exec();
}

c2d616ffd30a6b51ca1b80fe8a7569fa

###############################