QChart 设置图例折线图名称在同一条线上在在名称前添加图片

2024-05-11 06:48

本文主要是介绍QChart 设置图例折线图名称在同一条线上在在名称前添加图片,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先嵌套QGraphicsScene自己做一个头

void CreateTopWidget::initWidget()
{
    setStyleSheet("background-color:rgb(8, 21, 66);");
    m_scene = new QGraphicsScene();
    m_scene->setSceneRect(0, 0, 100, 10);
 
    m_grapView = new QGraphicsView();
    m_grapView->setStyleSheet("border: 3px solid rgb(8, 21, 66);");
    m_grapView->setScene(m_scene);
 
    QHBoxLayout * lay = new QHBoxLayout();
    lay->setContentsMargins(9, 0, 0, 0);
    lay->setSpacing(0);
    setLayout(lay);
 
    QWidget * widget = new QWidget();
    QHBoxLayout* tblay = new QHBoxLayout();
    tblay->setContentsMargins(0, 0, 0, 0);
    tblay->setSpacing(20);
    widget->setLayout(tblay);
 
    lb_img = new QLabel();
    tblay->addWidget(lb_img);
 
    lb_name = new QLabel();
    tblay->addWidget(lb_name);
 
    QSpacerItem* spacer = new QSpacerItem(20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
    tblay->addSpacerItem(spacer);
 
    QHBoxLayout* btnLay = new QHBoxLayout();
    btnLay->setContentsMargins(0, 0, 0, 0);
    QWidget* wt_title = new QWidget();
    wt_title->setGeometry(0, 0, 100, 10);
    btnLay->addWidget(wt_title);
    tblay->addLayout(btnLay);
 
    QHBoxLayout* hblay = new QHBoxLayout();
    hblay->setContentsMargins(0, 0, 0, 0);
    hblay->setSpacing(0);
    wt_title->setLayout(hblay);
    hblay->addWidget(m_grapView);
 
    lay->addWidget(widget);
 
}

因为QChart + QGraphicsScene 也可以使用,所以以QGraphicsView为基类

MyChart::MyChart(QWidget *parent) : QGraphicsView(parent)
{
    initWidget();
}
 
void MyChart::initWidget()
{
    m_grapScene = new QGraphicsScene();
    this->setScene(m_grapScene);
    wt_top = new CreateTopWidget();
 
    m_chart = new QChart();
    QBrush brush(QColor(8, 21, 66));
    m_chart->setBackgroundBrush(brush);
    m_chart->setAnimationOptions(QChart::SeriesAnimations);
    m_chart->createDefaultAxes();
 
    QLegend *le = m_chart->legend();
    m_grapScene->addItem(m_chart);
    m_grapScene->addWidget(wt_top);
    wt_top->setGrapScene(le);//获取当前图例放入QGraphicsScene中
}

之后

void MainWindow::initWidget()
{
    QGraphicsScene* scene = new QGraphicsScene();
    scene->setSceneRect(0, 10, 400, 300);
 
    QGraphicsView* view = new QGraphicsView();
    view->setScene(scene);
    view->setSceneRect(0, 0, 400, 300);
 
    MyChart *chart = new MyChart();
    chart->setTitle(":/icon.png", "Series 样例");
    chart->setGeometrys(0, 10, 600, 400);
 
    QBarCategoryAxis* Axis = new QBarCategoryAxis();
    Axis->setGridLineVisible(false);
    Axis->setLabelsColor(QColor(255, 255, 255));
    QStringList list;
    list<<"0"<<"1"<<"2"<<"3"<<"4"<<"5";
    Axis->append(list);
 
    QValueAxis* AxisY = new QValueAxis;
    AxisY->setLabelsColor(QColor(255, 255, 255));
    AxisY->setMinorGridLineVisible(false);
    AxisY->setGridLineVisible(false);
    AxisY->setLabelFormat("%d"); //设置刻度的格式
    AxisY->setRange(0, 10);
    AxisY->setTickCount(5);     //设置多少格
    AxisY->setMinorTickCount(5); //设置每格小刻度线的数目
 
    QSplineSeries *series = new QSplineSeries(chart);
    QList<QPointF> pointF;
    pointF<<QPoint(0,1)<<QPoint(1,1)<<QPoint(2,2)<<QPoint(3,3)<<QPoint(4,4);
    series->append(pointF);
    QString name("Series ");
    series->setName(name + QString::number(0));
 
    QSplineSeries *series1 = new QSplineSeries(chart);
    QList<QPointF> pointF1;
    pointF1<<QPoint(0,9)<<QPoint(1,4)<<QPoint(2,3)<<QPoint(3,1)<<QPoint(4,10);
    series1->append(pointF1);
    series1->setName(name + QString::number(1));
 
    chart->Legend()->setLabelColor(QColor(255,255,255));
 
    chart->addSeries(series);
    chart->addSeries(series1);
 
    chart->setAxisX(Axis, series);
    chart->setAxisX(Axis, series1);
 
    chart->setAxisY(AxisY, series);
    chart->setAxisY(AxisY, series1);
    ui->widget->layout()->addWidget(chart);
}

效果图:

下载地址:https://download.csdn.net/download/u010304326/10539740

这篇关于QChart 设置图例折线图名称在同一条线上在在名称前添加图片的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978797

相关文章

python实现svg图片转换为png和gif

《python实现svg图片转换为png和gif》这篇文章主要为大家详细介绍了python如何实现将svg图片格式转换为png和gif,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录python实现svg图片转换为png和gifpython实现图片格式之间的相互转换延展:基于Py

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取

Python实现图片分割的多种方法总结

《Python实现图片分割的多种方法总结》图片分割是图像处理中的一个重要任务,它的目标是将图像划分为多个区域或者对象,本文为大家整理了一些常用的分割方法,大家可以根据需求自行选择... 目录1. 基于传统图像处理的分割方法(1) 使用固定阈值分割图片(2) 自适应阈值分割(3) 使用图像边缘检测分割(4)

C#实现将Excel表格转换为图片(JPG/ PNG)

《C#实现将Excel表格转换为图片(JPG/PNG)》Excel表格可能会因为不同设备或字体缺失等问题,导致格式错乱或数据显示异常,转换为图片后,能确保数据的排版等保持一致,下面我们看看如何使用C... 目录通过C# 转换Excel工作表到图片通过C# 转换指定单元格区域到图片知识扩展C# 将 Excel

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

Pyserial设置缓冲区大小失败的问题解决

《Pyserial设置缓冲区大小失败的问题解决》本文主要介绍了Pyserial设置缓冲区大小失败的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录问题描述原因分析解决方案问题描述使用set_buffer_size()设置缓冲区大小后,buf

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

Python实现AVIF图片与其他图片格式间的批量转换

《Python实现AVIF图片与其他图片格式间的批量转换》这篇文章主要为大家详细介绍了如何使用Pillow库实现AVIF与其他格式的相互转换,即将AVIF转换为常见的格式,比如JPG或PNG,需要的小... 目录环境配置1.将单个 AVIF 图片转换为 JPG 和 PNG2.批量转换目录下所有 AVIF 图