金融图QCPFinancial

QCPFinancial 是 QCustomPlot 中用于绘制金融图表(如蜡烛图/K线图)的核心类。以下是其关键特性的详细说明:

一、主要属性

属性 类型 说明
data QSharedPointer<QCPFinancialDataContainer> 存储金融数据的数据容器
chartStyle QCPFinancial::ChartStyle 设置图表样式(蜡烛图/美国线等)
width double 每个数据项的宽度(0-1之间)
twoColored bool 是否使用两种颜色区分涨跌(默认true)
positive QCPScatterStyle 上涨时的样式(颜色、形状等)
negative QCPScatterStyle 下跌时的样式

二、核心方法

1. 数据操作方法

方法 参数 返回值 说明
setData QSharedPointer<QCPFinancialDataContainer> data void 设置完整数据集
addData const QVector<double>& keys, const QVector<double>& open, const QVector<double>& high, const QVector<double>& low, const QVector<double>& close void 批量添加数据
addData double key, double open, double high, double low, double close void 添加单个数据点
dataCount - int 返回数据点数量

2. 样式配置方法

方法 参数 返回值 说明
setChartStyle QCPFinancial::ChartStyle style void 设置图表类型
setWidth double width void 设置柱体宽度
setTwoColored bool enabled void 启用/禁用双色模式
setPen const QPen& pen void 设置统一线条颜色
setPositive const QPen& pen void 设置上涨颜色
setNegative const QPen& pen void 设置下跌颜色

3. 数据查询方法

方法 参数 返回值 说明
getKeyRange bool& foundRange, SignDomain inSignDomain = sdBoth QCPRange 获取键值范围
getValueRange bool& foundRange, SignDomain inSignDomain = sdBoth QCPRange 获取数值范围
selectTest const QPointF& pos, bool onlySelectable, QVariant* details = nullptr double 选择测试

三、信号列表

信号 参数 说明
selectionChanged bool selected 选中状态改变时触发
selectableChanged bool selectable 可选状态改变时触发

四、枚举类型

QCPFinancial::ChartStyle

值 说明
csOhlc 美国线(开盘-高-低-收盘)
csCandlestick 蜡烛图(默认)

五、基本使用示例

cpp

复制代码
// 创建金融图表
QCPFinancial *candlesticks = new QCPFinancial(customPlot->xAxis, customPlot->yAxis);

// 设置样式为蜡烛图
candlesticks->setChartStyle(QCPFinancial::csCandlestick);
candlesticks->setWidth(0.5);  // 设置宽度为时间间隔的50%

// 设置颜色
candlesticks->setPositive(QPen(Qt::green));
candlesticks->setNegative(QPen(Qt::red));

// 添加数据 (key, open, high, low, close)
QVector<double> keys, open, high, low, close;
// ... 填充数据 ...
candlesticks->addData(keys, open, high, low, close);

// 连接选择信号
connect(candlesticks, &QCPFinancial::selectionChanged, [](bool selected) {
    qDebug() << "K线图选择状态改变:" << selected;
});

六、高级技巧

1、自定义工具提示:

cpp

复制代码
connect(customPlot, &QCustomPlot::plottableClick, [](QCPAbstractPlottable *plottable, int dataIndex, QMouseEvent *event) {
    if (auto financial = qobject_cast<QCPFinancial*>(plottable)) {
        auto data = financial->data()->at(dataIndex);
        QToolTip::showText(event->globalPos(), 
            QString("日期: %1\n开盘: %2\n最高: %3\n最低: %4\n收盘: %5")
                .arg(data->key).arg(data->open)
                .arg(data->high).arg(data->low)
                .arg(data->close));
    }
});

2、动态更新数据:

cpp

复制代码
// 更新特定位置的数据
candlesticks->data()->at(index)->close = newCloseValue;
candlesticks->data()->at(index)->high = qMax(candlesticks->data()->at(index)->high, newCloseValue);
customPlot->replot();

通过以上属性和方法的组合,可以创建高度可定制的金融图表,满足股票、期货等金融数据的可视化需求。

相关推荐
byxdaz13 天前
QCustomPlot滑动区域放大与恢复
qcustomplot·滑动区域放大
尘中远3 个月前
【Qwt 7.0 系列】坐标轴与刻度系统 —— 刻度引擎、网格、图例与刻度朝内
qt·数据可视化·qcustomplot·qwt·工业软件·科学绘图
尘中远3 个月前
【Qwt 7.0 系列】交互功能详解 —— 平移、缩放、坐标轴交互与数据拾取
qt·数据可视化·绘图·qcustomplot·qwt·科学绘图
尘中远3 个月前
【Qwt 7.0 系列】3D 数据可视化 —— OpenGL 高性能三维绘图
qt·3d·qcustomplot·qwt·科学绘图·高性能绘图
春蕾夏荷_7282977251 年前
qcustomplot 显示坐标轴
qt·qcustomplot·坐标轴
OldField-Tian1 年前
QCustomPlot 性能优化与问题排查
qcustomplot
十秒耿直拆包选手1 年前
Qt:QCustomPlot类介绍
c++·qt·qcustomplot
人还是要有梦想的2 年前
Qt画实时曲线图
qt·qcustomplot·实时折线图
hellokandy3 年前
Qt QCustomPlot 鼠标悬浮提示
qt·qcustomplot·qcptooltip