gpt4 book ai didi

c++ - 如何在 QtCharts 中启用鼠标弹出?

转载 作者:行者123 更新时间:2023-11-30 02:29:46 25 4
gpt4 key购买 nike

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

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

enter image description here

我该如何实现这个 QtCharts?

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

最佳答案

据我所知,您必须自己完成。我需要完全相同的东西,并使用嵌入 QGraphicsProxyWidget 中的简单 QWidget,我将其添加到图 TableView 的 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),就会有信号,但它们通常很小,您只想对实际数据点使用react,而不是在线段上。

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

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

关于c++ - 如何在 QtCharts 中启用鼠标弹出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39286065/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com