5、QtCharts 曲线美化

2023-11-02 06:44
文章标签 qtcharts 曲线美

本文主要是介绍5、QtCharts 曲线美化,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 效果
  • ui 设置
  • dialog.h
  • dialog.cpp

效果

在这里插入图片描述

ui 设置

在这里插入图片描述

dialog.h

#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QtCharts>
#include <QLineSeries>
#include <QGraphicsScene>
#include <QTimer>
#include <QSplineSeries>
QT_BEGIN_NAMESPACE
namespace Ui { class Dialog; }
QT_END_NAMESPACEclass Dialog : public QDialog
{Q_OBJECTpublic:Dialog(QWidget *parent = nullptr);~Dialog();private:Ui::Dialog *ui;private:/*** @brief 获取数据,内部模拟生产变化数据* @param[in]x X坐标* @return x对应的数据*/qreal getData_1(qreal x);qreal getData_2(qreal x);/*** @brief 设置样式**/void changeStyle();/*** @brief 设置窗体调色板**/void setDialogPalette();public:QChart* m_chart;//构建图表对象QSplineSeries* m_splineSerise1;QSplineSeries* m_splineSerise2;QGraphicsScene* m_pScene;QTimer* m_timer;//定时器QValueAxis* m_axisX;//X坐标轴QValueAxis* m_axisY;//Y坐标轴qint64 m_tmLast;//上次定时器进入的时间
public slots:};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include "ui_dialog.h"
#include <QString>const quint32 c_MaxSize=1000;//数据个数Dialog::Dialog(QWidget *parent): QDialog(parent), ui(new Ui::Dialog),m_tmLast(0),m_splineSerise1(NULL),m_splineSerise2(NULL)
{ui->setupUi(this);//setWindowFlags(Qt::FramelessWindowHint);//构建曲线系列m_splineSerise1=new QSplineSeries(this);m_splineSerise2=new QSplineSeries(this);//为折线添加数据,曲线一qint32 i=0;qreal x=0.f;for (i=0;i<c_MaxSize;i++){x=i*1.f/c_MaxSize;m_splineSerise1->append(i,getData_1(x));}//为折线添加数据,曲线二for ( i=0;i<c_MaxSize;i++){x=i*1.f/c_MaxSize;m_splineSerise2->append(i,getData_2(x));}//构建图标对象m_chart=new QChart();//注意:先添加到图表再创建坐标轴,否则无效//构建坐标轴m_axisX = new QValueAxis();m_axisX->setRange(0,c_MaxSize);m_axisX->setTitleText(QString::fromLocal8Bit("Time"));//设置标题m_axisX->setLabelFormat("%g");//设置格式m_axisX->setTickCount(5);//设置刻度数m_axisY= new QValueAxis();m_axisY->setRange(-10,10);m_axisY->setTitleText(QString::fromLocal8Bit("T"));//将坐标轴绑定m_chart->setAxisX(m_axisX,m_splineSerise1);m_chart->setAxisY(m_axisY,m_splineSerise1);m_chart->setAxisX(m_axisX,m_splineSerise2);m_chart->setAxisY(m_axisY,m_splineSerise2);//隐藏图例m_chart->legend()->hide();//设置图标主题m_chart->setTheme(QtCharts::QChart::ChartThemeBlueCerulean);//设置标题m_chart->setTitle(QString("图表1"));//设置尺寸m_chart->setGeometry(0,0,500,300);//构建场景m_pScene =new QGraphicsScene(this);//为视图构建场景ui->graphicsView->setScene(m_pScene);//将图表添加到场景m_pScene->addItem(m_chart);//设置抗锯齿ui->graphicsView->setRenderHint(QPainter::Antialiasing,true);//设置样式changeStyle();//1.将折线系列添加到图表m_chart->addSeries(m_splineSerise1);m_chart->addSeries(m_splineSerise2);
}Dialog::~Dialog()
{delete ui;
}qreal Dialog::getData_1(qreal x)
{return qSin(x*2*M_PI)*7;//正弦
}qreal Dialog::getData_2(qreal x)
{return qCos(x*2*M_PI)*7;//余弦
}void Dialog::changeStyle()
{/*** 修改窗体**///根据图表的主题设置调色板setDialogPalette();/*** 修改图表**/m_chart->setBackgroundVisible(true);//m_chart->setBackgroundBrush(Qt::transparent);//设置为透明m_chart->setBackgroundBrush(Qt::lightGray);QPen penBackground;penBackground.setStyle(Qt::DotLine);penBackground.setColor(Qt::green);m_chart->setBackgroundPen(penBackground);/*** 修改绘图区**/m_chart->setPlotAreaBackgroundVisible(true);m_chart->setPlotAreaBackgroundBrush(Qt::gray);/*** 修改标题**/QFont fontTitle;fontTitle.setFamily(QString::fromLocal8Bit("华文琥珀"));fontTitle.setPointSizeF(20.f);m_chart->setTitleFont(fontTitle);//设置字色m_chart->setTitleBrush(Qt::black);/*** 修改刻度**///设置刻度QFont fontAxis;fontAxis.setFamily(QString::fromLocal8Bit("微软雅黑"));fontAxis.setPointSizeF(12.f);m_axisX->setTitleFont(fontAxis);m_axisY->setTitleFont(fontAxis);//设置字色m_axisX->setTitleBrush(Qt::darkMagenta);m_axisY->setTitleBrush(Qt::darkMagenta);//设否显示刻度线m_axisX->setGridLineVisible(true);m_axisY->setGridLineVisible(true);//设置字体坐标轴QFont fontLabel;fontLabel.setFamily(QStringLiteral("微软雅黑"));fontLabel.setPixelSize(12);m_axisX->setLabelsFont(fontLabel);m_axisY->setLabelsFont(fontLabel);/*** 修改图例**///对齐方式m_chart->legend()->setAlignment(Qt::AlignLeft);/*** 系列**/QPen pn1(Qt::green,2.f);m_splineSerise1->setPen(pn1);QPen pn2(Qt::cyan,2.f);m_splineSerise2->setPen(pn2);/*** 开启动画**/QChart::AnimationOptions aniOptions=QChart::AllAnimations;m_chart->setAnimationOptions(aniOptions);}void Dialog::setDialogPalette()
{QChart::ChartTheme theme=QChart::ChartThemeBlueIcy;m_chart->setTheme(theme);//根据选定的主题确定Dialog的调色板QPalette pal=window()->palette();switch (theme){case QtCharts::QChart::ChartThemeLight:pal.setColor(QPalette::Window,QRgb(0xf0f0f0));pal.setColor(QPalette::WindowText,QRgb(0x404040));break;case QtCharts::QChart::ChartThemeBlueCerulean:pal.setColor(QPalette::Window,QRgb(0x121218));pal.setColor(QPalette::WindowText,QRgb(0x6d6d6));break;case QtCharts::QChart::ChartThemeDark:pal.setColor(QPalette::Window,QRgb(0xf0f0f0));pal.setColor(QPalette::WindowText,QRgb(0x404040));break;case QtCharts::QChart::ChartThemeBrownSand:pal.setColor(QPalette::Window,QRgb(0xf0f0f0));pal.setColor(QPalette::WindowText,QRgb(0x404040));break;case QtCharts::QChart::ChartThemeBlueNcs:pal.setColor(QPalette::Window,QRgb(0xf0f0f0));pal.setColor(QPalette::WindowText,QRgb(0x404040));break;case QtCharts::QChart::ChartThemeHighContrast:pal.setColor(QPalette::Window,QRgb(0xf0f0f0));pal.setColor(QPalette::WindowText,QRgb(0x404040));break;case QtCharts::QChart::ChartThemeBlueIcy:pal.setColor(QPalette::Window,QRgb(0xf0f0f0));pal.setColor(QPalette::WindowText,QRgb(0x404040));break;case QtCharts::QChart::ChartThemeQt:pal.setColor(QPalette::Window,QRgb(0xf0f0f0));pal.setColor(QPalette::WindowText,QRgb(0x404040));break;default:pal.setColor(QPalette::Window,QRgb(0xf0f0f0));pal.setColor(QPalette::WindowText,QRgb(0x404040));break;}window()->setPalette(pal);
}

这篇关于5、QtCharts 曲线美化的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Ubuntu 16.04 Qt5安装qtcharts

Qtcreator5.5安装qchart,首先下载qtcharts,然后进入该路径下,qmake一下。 $git clone https://github.com/qtproject/qtcharts.git $cd qtcharts $qmake 这时会出现问题是’qtConfig’ is nit a recongnized test function 这时输入: $git che

QtCharts使用

1.基础配置 1.QGraphicsView提升为QChartView#include <QtCharts>QT_CHARTS_USE_NAMESPACE#include "ui_widget.h"2. QT += charts 2.柱状图 2.1QBarSeries //1.创建Qchart对象QChart *chart = new QChart();chart->setTi

QtCharts 组件

Qtcharts 组件基于GraphicsView模式实现,其核心是QChartView和QChart的二次封装版。 在pro文件中包含QT += charts来引入绘图类库。 头文件中定义QT_CHARTS_USE_NAMESPACE宏,这样才可以正常的使用绘图功能。 一般情况下我们会在mainwindows.h头文件中增加如下代码段。 #include <QMainWindow>#i

QtCreator配置QtCharts

文章目录 在VS 2017 下配置先下载QtCharts使用QtCreator打开打开VS2017开发人员工具msvc和mingw区别 在VS 2017 下配置 先下载QtCharts git clone https://github.com/qt/qtcharts.git 使用QtCreator打开 如果出现读取不到perl,可以去下载ActivePerl 也可以进

QtCharts移植报错

文章目录 目的解决方案 目的 由于在linux 实现了一套自定义BarChart, 它本身继承自QChart class BarChart : public QChart{Q_OBJECTpublic:explicit BarChart(QGraphicsItem *parent = nullptr, Qt::WindowFlags wFlags = 0);~BarCha

技术小新 | QtCharts快速入门

一、QtCharts   QtCharts是Qt自带的组件库,其中包含折线、曲线、饼图、棒图、散点图、雷达图等各种常用的图表。而在地面站开发过程中,使用折线图可以对无人机的一些状态数据进行监测,更是可以使用散点图来模拟飞机所在位置,实现平面地图的感觉。   使用Qt Charts绘制,大概可以分为四个部分:数据(QXYSeries)、图表(QChart)、坐标轴(QAbstractAXis)和

Qt图表绘制(QtCharts)-绘制简单的面积图(2)

Qt图表绘制(QtCharts)-绘制简单的面积图(2)💪 文章目录 Qt图表绘制(QtCharts)-绘制简单的面积图(2)💪1、概述🦵2、实现步骤🙌3、主要使用的类🖖4、主要代码🤲5、实现效果👍6、源代码✌ 更多精彩内容👉个人内容分类汇总 👈 注意:我使用的QtCharts是基于Qt 5.12.12版本 1、概述🦵 Qt Charts 模块提供了