2

QtChart でマウスをシリーズの上に置いたときに小さなポップアップを表示する必要があります。

Highcharts (Javascript) には、次のような非常に優れた例がいくつかあります。

ここに画像の説明を入力

この QtCharts を実装するにはどうすればよいですか?

ポップアップの実装に関するドキュメントが見つかりません。

4

1 に答える 1

3

私の知る限り、あなたは自分でそれをしなければなりません。まったく同じものが必要で、チャート ビューの QGraphicsScene に追加した QGraphicsProxyWidget に埋め込まれた単純な QWidget を使用しました。

QWidget *popup = new MyPopUpWidget;
QChartView v;
QGraphicsProxyWidget *proxy = v.scene()->addWidget(popup);

// if you want a drop shadow you can use QGraphicsDropShadowEffect
QGraphicsDropShadowEffect* shadow   = new QGraphicsDropShadowEffect();
shadow->setOffset(0, 4);
shadow->setBlurRadius(8);
proxy->setGraphicsEffect(shadow);

これは素晴らしくシンプルですが、ポップアップの配置は実際の作業です。すべての単純な解決策は、私にとって十分ではありませんでした。たとえば、マウスが QGraphicsItem にヒットした場合 (グラフのすべての行項目は QGraphicsItems です)、信号がありますが、通常は小さすぎて、線分ではなく実際のデータ ポイントにのみ反応する必要があります。

mouseMove(QMouseMoveEvent *) 関数をオーバーライドして、常にすべてのデータ ポイントに対してマウスの位置を確認し、ポップアップ (表示/非表示、配置) を調整できます。速度が遅くなるポイントが多数ある場合、最初に空間グリッドを使用し、データ ポイントをグリッド セルに割り当てました。次に、マウス位置の周囲のグリッド セル内のポイントをチェックするだけです。

より良い解決策が見つかりませんでした。

于 2016-09-02T07:50:18.280 に答える