QtChart中BoxSet自定义样式的实现

31 篇文章 11 订阅
6 篇文章 1 订阅

QtChart提供了一个实现K线图的方法。本例中使用QML中BoxSet实现盒子的填充色以及箱线颜色的修改。

主要是利用

代码示例如下BoxSet的brush和pen属性实现颜色的变化。brush的属性可以添加一个color即可。但是pen不能,所以利用c++实现从外面获取方式。

int main(int argc, char *argv[])
{
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    QApplication app(argc, argv);

    qmlRegisterType<CBoxSet>("CBoxSet", 1, 0, "CBoxSet");

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
    if (engine.rootObjects().isEmpty())
        return -1;

    QVariant v = QVariant::fromValue(QPen(QColor("red"),2));
    engine.rootObjects().at(0)->setProperty("boxsetpen",v);

    return app.exec();
}

main.qml

import QtQuick 2.9
import QtQuick.Window 2.2
import QtCharts 2.0
import CBoxSet 1.0

Window {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    id : mw
    property var boxsetpen;
    property var boxsetbrush: Qt.rgba(0.5,1,1)

    ChartView {
         title: "Box Plot series"
         anchors.fill: parent
         //theme: ChartView.ChartThemeBlueCerulean
         legend.alignment: Qt.AlignBottom


         BoxPlotSeries {
             id: plotSeries
             name: "Income"
             //boxOutlineVisible: false

             BoxSet { label: "Jan"; values: [3, 4, 5.1, 6.2, 8.5] }
             BoxSet { label: "Feb"; values: [5, 6, 7.5, 8.6, 11.8]
                brush: Qt.rgba(0.1,0.8,1)
             }
             BoxSet { label: "Mar"; values: [3.2, 5, 5.7, 8, 9.2]
                brush: Qt.rgba(0.5,0.5,1)
             }
             BoxSet { label: "Apr"; values: [3.8, 5, 6.4, 7, 8]
             brush: Qt.rgba(0.5,0.1,1)
             }
             BoxSet {
                 label: "May"; values: [4, 5, 5.2, 6, 7]
          
                 brush: mw.boxsetbrush//Qt.rgba(0.5,1,1)  //重点
                 pen : mw.boxsetpen 重点
             }
         }

     }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值