【问题标题】:How to enable mouse popup in QtCharts?如何在 QtCharts 中启用鼠标弹出?
【发布时间】:2017-01-10 04:42:19
【问题描述】:

当鼠标悬停在我的 QtChart 中的系列上时,我需要显示一个小弹出窗口。

Highcharts (Javascript) 有一些非常好的例子,比如这个:

如何实现这个 QtCharts?

我找不到任何关于实现弹出窗口的文档。

【问题讨论】:

标签: c++ qt qtcharts


【解决方案1】:

据我所知,你必须自己做。我需要完全相同并使用嵌入在 QGraphicsProxyWidget 中的简单 QWidget,我将其添加到图表视图的 QGraphicsScene 中。

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 *) 函数,并始终根据所有数据点检查鼠标位置并调整弹出窗口(显示/隐藏、定位)。如果你有很多点会很慢,所以我最初使用空间网格并将数据点分配给网格单元。然后,您只需检查鼠标位置周围网格单元格内的点。

我没有找到更好的解决方案。

【讨论】:

  • 你能给你看代码吗?我真的不知道从哪里开始。关于这个主题的好例子并不多。
猜你喜欢
  • 2017-01-10
  • 1970-01-01
  • 1970-01-01
  • 2014-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-09
  • 1970-01-01
相关资源
最近更新 更多