2017-09-21 1 views
0

Ich habe ein Kreisdiagramm dynamisch erstellt, das die unten beschriebene Funktion createPieChart() verwendet. Wenn auf ein Segment geklickt wird, möchte ich eine Funktion aufrufen, um das Label und den Wert dieses Segments auszugeben.QML-Diagramm interaktiv

Ich bin vor zwei Problemen:

  1. Obwohl ich „angeklickt“ oder „gedrückt“ oder „freigegeben“ Signale verbinden, wird der Steckplatz nicht erreicht. Ich verwende qtcharts 2.0 (ich kann gerade nicht aktualisieren).
  2. Ich bin in der Lage, "hovered" -Signal zu verbinden, aber ohne irgendeinen Parameter zu übergeben, also weiß ich nicht, in welcher Scheibe ich bin.

Diese sind die anderen Funktionen:

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

Jede Vorstellung davon, wie es zu tun? Vielen Dank!

+0

Offenbar verbinden Ich bin nicht der einzige, um dieses Problem gegenüber. Das clicked() -Signal wird auch bei diesem Beitrag nicht ausgelöst: https://stackoverflow.com/questions/40626911/why-is-the-clicked-signal-for-the-qpieslice-not-emitted – laurapons

Antwort

0

Nach dem Upgrade auf QtCharts 2.2 konnte ich es so lösen: Für & Streudiagramme pie & Linie, benutzte ich onClicked, die die Scheibe/Punkt zurückkehrt. Sie müssen also kein Signal anschließen, wenn Sie die Slices oder Punkte dynamisch erstellen.

Für Balkendiagramme, konnte ich die Barset erstellt

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