charts - QML 图表交互

标签 charts qml interactive signal-handling

我有一个动态创建的饼图,它使用下面描述的函数 createPieChart() 。单击切片时,我想调用一个函数来打印该切片的标签和值。

我面临两个问题:

  1. 虽然我连接了“clicked”或“pressed”或“released”信号,但未到达插槽。我正在使用 qtcharts 2.0(我现在无法更新)。
  2. 我能够连接“悬停”信号,但无需传递任何参数,因此我不知道自己处于哪个切片中。

这些是其他功能:

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,它返回切片/点。因此,动态创建切片或点时不需要连接任何信号。

对于条形图,我能够连接创建的条形图

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)}
}

关于charts - QML 图表交互,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46346559/

相关文章:

charts - 在 Highcharts 中设置光标指针

javascript - Highcharts - 双 y 轴不显示

javascript - 将条形子弹图转换为柱形图

QML矩形不透明度只有颜色

automation - (Tcl/Expect) 退出后清屏

angularjs - 如何在 zingcharts-angularjs 中渲染两个 y 轴?

zooming - 在Qt Quick(QML)中实现缩放/缩放的正确方法

ruby - 安装 ruby​​-qml - 错误 : Failed to build libqmlbind - What is missing?

graph - 交互式替代点?

c# - .NET Core 控制台应用程序中的交互式、可选择和可滚动项目,如 Yeoman 控制台