2017-10-09 46 views
0

私は動的に変化するpiechartを持っています。スライス上にマウスを置いたときに各スライスの値を表示したいのですが、onHoveredがトリガーされたときにツールチップを作成する方法がわかりません。私はスライスを作成方法を説明するためにいくつかのコードを追加しました:私はQML動的にツールチップを作成

QTに5.9.1 &輸入QtQuick.Controls

UPDATE 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を見ることができますが、私は、ツールチップを見ることができないですし、アプリケーションの出力は、エラーが表示されませんが、ツールチップが

+0

?関数内で動的に – sk2212

+0

:関数createPieChart(データ){ pieserieschart.clear(); for(データ内の可変プロット){ var new_slice = pieserieschart.append(prop、data [prop]); new_slice.tooltip = prop + ":" + data [prop] } – laurapons

+0

new_slice.tooltipを宣言しようとしましたが、onHoveredではslice.tooltipを読むことができますが、表示されません。 – laurapons

答えて

2

がトリガされません関連ドキュメント:

例: 'スライス' は定義されて

ChartView { 
    id: chartView 

    PieSeries { 
     onHovered: { 
      if (state) 
       chartView.ToolTip.show(slice.label + ":" + slice.value) 
      else 
       chartView.ToolTip.hide() 
     } 
    } 
} 
+0

ありがとう!それはまさに私が探していたものでした! :) – laurapons

+0

このソリューションの問題点は、ツールチップの位置が常に同じであることです(上のスライスを考慮した上で、チャートビューの上端)。マウスが動かされた場所やスライス上にツールチップが現れたら理想的でしょう) – laurapons

+0

申し訳ありませんが、私はQt Chartsに慣れていませんが、現在PieSliceの位置を問い合わせる方法はありません。少なくとも私はドキュメントに関連するものは見つけられません。ちょっとしたC++ヘルパーを作成し、それをQMLに公開して、マウスカーソルの位置を 'QCursor :: pos()'で照会することもできます。 – jpnurmi

関連する問題