QML 动态创建工具提示

lau*_*ons 0 javascript tooltip qml qtquick2 qtquickcontrols2

所以我有一个动态变化的饼图。我想在将鼠标悬停在切片上时显示每个切片的值,但我不确定如何在触发 onHovered 时创建工具提示。我用

qt 5.9.1 & 导入 QtQuick.Controls 2.2

更新:我添加了一些代码来解释我如何创建切片。这是代码:

function onUpdateValues(values){
     switch(values.type){
           case PIE_CHART: 
                createPieChart(values.data);
                break;
           ...
           default:
                console.debug("CHART TYPE ERROR");
                break;
            }
     }
}

function createPieChart(data){
    pieserieschart.clear();
    for (var prop in data) {
        var new_slice =  pieserieschart.append(prop, data[prop]);
        new_slice.tooltip = prop + ": " + data[prop]
        //I tried using hovered signal (and without), but it's not doing any difference
        new_slice.hovered.connect(function(state) { new_slice.tooltip.visible = state })
        //If I replace the above line by the next one, I can see the console.log info, but the tooltip is not enabled
        new_slice.hovered.connect(function(state) { sliceHovered(new_slice, state) })

    }
}

function sliceHovered(slice, value){
    slice.enabled = true
    console.log("Slice hovered: " + slice.tooltip + " " + value)
}

ChartView { /* Chart */
    id:chartView

    PieSeries {
       id: pieserieschart;
       size: 1;
       holeSize: 0.55;
       onClicked: sliceClicked(slice);
    }
}
Run Code Online (Sandbox Code Playgroud)

可以看到console.log但是看不到工具提示,应用程序输出也没有显示任何错误,但是没有触发工具提示

jpn*_*rmi 5

相关文档:

例子:

ChartView {
    id: chartView

    PieSeries {
        onHovered: {
            if (state)
                chartView.ToolTip.show(slice.label + ":" + slice.value)
            else
                chartView.ToolTip.hide()
        }
    }
}
Run Code Online (Sandbox Code Playgroud)