2017-09-21 98 views
0

我有一個動態創建的餅圖,它使用下面描述的函數createPieChart()。當單擊切片時,我想調用一個函數來打印出該切片的標籤和值。QML Chart interactive

我面臨兩個問題:

  1. 雖然我連接「點擊」或「按下」或「釋放」信號,沒有達到插槽。我正在使用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); 
} 

的如何做到這一點任何想法?謝謝!

+0

顯然我不是面臨這個問題的唯一一個。 clicked()信號不在這篇文章中觸發:https://stackoverflow.com/questions/40626911/why-is-the-clicked-signal-for-the-qpieslice-not-emitted – laurapons

回答

0

升級到2.2 QtCharts我能夠解決像這樣經過: 對於餅狀&線&散點圖,我使用onClicked,返回片/點。因此,在動態創建切片或點時,您不需要連接任何信號。

對於柱狀圖,我是能夠連接barset創建

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