QtChart中BoxSet自定义样式的实现

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

QtChart中BoxSet自定义样式的实现_第1张图片

主要是利用

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

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

    QApplication app(argc, argv);

    qmlRegisterType("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 ////重点
             }
         }

     }
}

 

你可能感兴趣的:(Qt,qml,QtChart)