QML 图表交互
QML Chart interactive
我有一个动态创建的饼图,它使用下面描述的函数 createPieChart()。单击切片时,我想调用一个函数来打印出该切片的标签和值。
我面临两个问题:
- 虽然我连接了"clicked"或"pressed"或"released"信号,但插槽未到达。我正在使用 qtcharts 2.0(我现在无法更新)。
- 我可以连接 "hovered" 信号,但没有传递任何参数,所以我不知道我进入的是哪个切片。
这些是其他函数:
function createPieChart(data){
pieserieschart.clear();
slices.splice(0, slices.length) //clear slices array
for (var prop in data) {
slices.unshift(pieserieschart.append(prop, data[prop]));
//I get "Cannot read property 'label' of undefined using this method
slices[0].hovered.connect(function(){mouseHoverSlice(slices[0].label));
//WORKS, but I want to pass the label of that slice (and the value if possible)
slices[0].hovered.connect(mouseHoverSlice);
//it is not working at all
slices[i].clicked.connect(sliceClicked);
}
function sliceClicked(){
console.log("Slice Clicked"); //I cannot see this printed
}
function mouseHoverSlice(info){
console.log("Slice hover: " + info);
}
知道怎么做吗?谢谢!
升级到QtCharts 2.2后,我可以这样解决:
对于饼图、折线图和散点图,我使用了 onClicked,它 returns slice/point。因此动态创建切片或点时不需要连接任何信号。
对于条形图,我能够连接创建的条形图
var barvalues = barserieschart.append("label",values)
barvalues.clicked.connect(barClicked)
...
ChartView {
PieSeries {id: pieserieschart; onClicked: sliceClicked(slice) }
BarSeries {id: barserieschart }
ScatterSeries{id: scatterserieschart; onClicked: scatterclicked(point)}
}
我有一个动态创建的饼图,它使用下面描述的函数 createPieChart()。单击切片时,我想调用一个函数来打印出该切片的标签和值。
我面临两个问题:
- 虽然我连接了"clicked"或"pressed"或"released"信号,但插槽未到达。我正在使用 qtcharts 2.0(我现在无法更新)。
- 我可以连接 "hovered" 信号,但没有传递任何参数,所以我不知道我进入的是哪个切片。
这些是其他函数:
function createPieChart(data){
pieserieschart.clear();
slices.splice(0, slices.length) //clear slices array
for (var prop in data) {
slices.unshift(pieserieschart.append(prop, data[prop]));
//I get "Cannot read property 'label' of undefined using this method
slices[0].hovered.connect(function(){mouseHoverSlice(slices[0].label));
//WORKS, but I want to pass the label of that slice (and the value if possible)
slices[0].hovered.connect(mouseHoverSlice);
//it is not working at all
slices[i].clicked.connect(sliceClicked);
}
function sliceClicked(){
console.log("Slice Clicked"); //I cannot see this printed
}
function mouseHoverSlice(info){
console.log("Slice hover: " + info);
}
知道怎么做吗?谢谢!
升级到QtCharts 2.2后,我可以这样解决: 对于饼图、折线图和散点图,我使用了 onClicked,它 returns slice/point。因此动态创建切片或点时不需要连接任何信号。
对于条形图,我能够连接创建的条形图
var barvalues = barserieschart.append("label",values)
barvalues.clicked.connect(barClicked)
...
ChartView {
PieSeries {id: pieserieschart; onClicked: sliceClicked(slice) }
BarSeries {id: barserieschart }
ScatterSeries{id: scatterserieschart; onClicked: scatterclicked(point)}
}