QML动态创建工具提示
问题描述:
所以我有一个动态变化的饼图。我想显示鼠标移动到切片上时每个切片的值,但我不确定如何在触发onHovered时创建工具提示。我用QML动态创建工具提示
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);
}
}
我能看到的console.log,但我没能看到提示,以及应用程序的输出不显示任何错误,但提示没有触发
答
相关的文档:
- PieSeries::hovered(PieSlice slice, bool state)
- ToolTip::show(string text, int timeout = -1)
- ToolTip::hide()
实施例:
ChartView {
id: chartView
PieSeries {
onHovered: {
if (state)
chartView.ToolTip.show(slice.label + ":" + slice.value)
else
chartView.ToolTip.hide()
}
}
}
哪里是 '切片' 定义? – sk2212
动态地在一个函数中:function createPieChart(data){ pieserieschart.clear(); (var prop in data){ var new_slice = pieserieschart.append(prop,data [prop]); new_slice.tooltip = prop +“:”+ data [prop] } – laurapons
我试过声明new_slice.tooltip,并且onHovered,我可以阅读slice.tooltip,但它不显示 – laurapons