在QChart笔记2: 添加鼠标悬停显示和格式处理_qchart 折线图 响应鼠标显示数据-CSDN博客上修改而来。
在笔记2中,通过鼠标悬停的方式显示了坐标轴Y的值,如果要一直显示应该怎么写呢?比如要达到下面的效果。
核心是这句:
series1->setPointLabelsFormat("@yPoint");
pointLabelsFormat :
用于显示带有数据点的标签的格式。
QXYSeries 支持以下格式标签:
@xPoint:数据点的 x 坐标。
@yPoint:数据点的 y 坐标。
例如,格式标记的以下用法将生成显示数据点的标签,这些数据点显示在用逗号 (x, y) 分隔的括号内:series->setPointLabelsFormat("(@xPoint, @yPoint)");
默认情况下,标签的格式设置为@xPoint、@yPoint。标签显示在绘图区域上,绘图区域边缘的标签被剪切。如果这些点彼此靠近,则标签可能会重叠。相关的函数:
QString
pointLabelsFormat() const
void
setPointLabelsFormat(const QString &format)
通知信号:
void
pointLabelsFormatChanged(const QString &format)
源码:
main.cpp
#include "mainwindow.h"
#include <QApplication>
#include <QMainWindow>
#include <QChartView>
#include <QPieSeries>
#include <QPieSlice>
#include <QPointF>
#include <QDateTime>
#include <QDate>
#include <QDateTimeAxis>
#include <QDebug>
#include <QSplineSeries>
#include <QToolTip>
#include <QtCharts>
#include "chartview.h"
QChart *chart;
QSplineSeries *series1;
ChartView *chartView;
QScatterSeries *scatterSeries;
void initChart()
{
//初始化QChart的实例
chart = new QChart();
//初始化QSplineSeries的实例
series1 = new QSplineSeries();
//设置两条折线的名称
series1->setName("第一组");
//把曲线添加到QChart的实例chart中
chart->addSeries(series1);
chart->legend()->hide();
//声明并初始化X轴、两个Y轴
QDateTimeAxis *axisX = new QDateTimeAxis();
QValueAxis *axisY_1 = new QValueAxis();
//设置坐标轴显示的范围
axisX->setMin(QDateTime(QDate(2022, 6, 6), QTime()));
axisX->setMax(QDateTime(QDate(2022, 6, 12), QTime()));
axisX->setTickCount(7);
axisX->setFormat(QString("yyyy-MM-dd"));
axisY_1->setMin(0);
axisY_1->set