金融图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();

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

相关推荐
人还是要有梦想的10 个月前
Qt画实时曲线图
qt·qcustomplot·实时折线图
hellokandy1 年前
Qt QCustomPlot 鼠标悬浮提示
qt·qcustomplot·qcptooltip
Ellie是个昵称2 年前
QCustomPlot实现曲线拖拽
c++·qt·qcustomplot
太阳风暴2 年前
Qt扩展-QCustomPlot 简介及配置
qt5·qcustomplot·qcustomplot安装·qcustomplot简介·qt绘图库
DreamLife☼2 年前
005-第一代光电小工具(一)
qt·sqlite·qcustomplot·曲线