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 重点
}
}
}
}