折线图
Line Chart 折线图
折线图用于展示连续数据趋势,适合监控曲线、业务指标走势、历史对比和时序数据分析。
基类与类图
QOpenGLWidget
└─ UIGQChartBase
└─ UIGQLineChart + IUIGQWidgetBase
UIGQLineChart 继承 UIGQChartBase 的主题、动画、图例和 tooltip 能力,并通过 IUIGQWidgetBase 接入 Qt-UI 控件体系。
数据结构
struct UIGQLineChartSeries
{
QString name;
QVector<double> values;
QColor lineColor;
QColor areaColor;
bool showSymbol = true;
bool smooth = false;
bool showArea = false;
bool visible = true;
qreal lineWidth = 2.0;
qreal areaOpacity = 0.22;
};
常用方法
| 方法 | 说明 | 参数 | 返回值 |
|---|---|---|---|
setTitle(const QString& title) |
设置标题。 | title:标题文本。 |
void |
getTitle() |
读取标题。 | 无。 | QString |
setCategories(const QStringList& categories) |
设置分类标签。 | categories:横轴分类列表。 |
void |
getCategories() |
读取分类标签。 | 无。 | QStringList |
setValues(const QVector<double>& values) |
设置默认单序列数值。 | values:数值列表。 |
void |
getValues() |
读取默认单序列数值。 | 无。 | QVector<double> |
setSeries(const QString& name, const QVector<double>& values, const QColor& color) |
快速设置单条折线。 | name:序列名称;values:数值列表;color:线条颜色,可使用默认值。 |
void |
setSeries(const QVector<UIGQLineChartSeries>& series) |
设置多条折线及每条线的显示参数。 | series:折线序列数组。 |
void |
getSeries() |
读取当前折线序列。 | 无。 | QVector<UIGQLineChartSeries> |
clearSeries() |
清空所有折线数据。 | 无。 | void |
setShowSymbol(bool show) |
全局控制数据点符号。 | show:是否显示数据点符号。 |
void |
getShowSymbol() |
读取数据点符号显示状态。 | 无。 | bool |
setSmooth(bool smooth) |
全局控制是否使用平滑曲线。 | smooth:是否平滑。 |
void |
getSmooth() |
读取平滑曲线状态。 | 无。 | bool |
setShowArea(bool show) |
全局控制是否显示面积填充。 | show:是否显示面积。 |
void |
getShowArea() |
读取面积填充状态。 | 无。 | bool |
setSeriesVisible(int index, bool visible) |
控制指定序列显示或隐藏。 | index:序列索引;visible:是否显示。 |
void |
isSeriesVisible(int index) |
判断指定序列是否显示。 | index:序列索引。 |
bool |
setTooltipMode(UIGQChartTooltipMode mode) |
设置 tooltip 模式。 | mode:tooltip 模式枚举。 |
void |
getTooltipMode() |
读取 tooltip 模式。 | 无。 | UIGQChartTooltipMode |
setTooltipVisible(bool visible) |
设置 tooltip 是否显示。 | visible:是否显示。 |
void |
getTooltipVisible() |
读取 tooltip 显示状态。 | 无。 | bool |
setHoverEnabled(bool enabled) |
开启或关闭 hover 交互。 | enabled:是否启用 hover。 |
void |
getHoverEnabled() |
读取 hover 交互状态。 | 无。 | bool |
initDemoData() |
初始化演示数据。 | 无。 | void |
单序列调用
using namespace UIGQtLib;
auto* chart = new UIGQLineChart(parent);
chart->setTitle("CPU Usage");
chart->setCategories({"00:00", "00:05", "00:10", "00:15"});
chart->setSeries("CPU", {22.0, 35.0, 31.0, 48.0}, QColor(35, 128, 224));
chart->setSmooth(true);
chart->setShowSymbol(true);
chart->setThemePreset(kChartThemeMacarons);
chart->setTooltipMode(kChartTooltipAxis);
chart->setTooltipVisible(true);
调用说明:
setCategories(...)设置横轴标签。setSeries(...)设置折线名称、数值和颜色。setSmooth(true)适合趋势类图表;精确折线可保持默认false。kChartTooltipAxis适合按横轴位置查看同一时刻的值。
多序列调用
QVector<UIGQLineChartSeries> series;
UIGQLineChartSeries cpu;
cpu.name = "CPU";
cpu.values = {22, 35, 31, 48};
cpu.lineColor = QColor(35, 128, 224);
cpu.showSymbol = true;
series.append(cpu);
UIGQLineChartSeries memory;
memory.name = "Memory";
memory.values = {58, 60, 63, 61};
memory.lineColor = QColor(62, 180, 98);
memory.showArea = true;
memory.areaColor = QColor(62, 180, 98, 80);
series.append(memory);
chart->setSeries(series);
调用说明:
- 多序列使用
QVector<UIGQLineChartSeries>一次性设置。 showArea与areaColor用于面积趋势图。visible可配合setSeriesVisible(...)做图例筛选。