Qt QXYSeries和ChartView -修改悬停行为在一个范围内触发
Qt QXYSeries and ChartView - modify hovered behavior to trigger within a range
我有一个散点图,由QXYSeries表示,并使用Qt Charts 5.7中的ChartView查看。
我想将鼠标悬停在绘图上,在一定距离内触发"悬停",而不是仅当我的光标直接位于一个点的顶部时。想象一下鼠标周围有一个圆圈,每当系列的任何部分在它里面时,它就会触发悬停。
有办法得到这个行为吗?
最终,我通过创建一个继承QChartView的类并因此重写mouseMoveEvent(QMouseEvent* event)
来获得这种行为:
void ScatterView::mouseMoveEvent(QMouseEvent* event)
{
if(!this->chart()->axisX() || !this->chart()->axisY())
{
return;
}
QPointF inPoint;
QPointF chartPoint;
inPoint.setX(event->x());
inPoint.setY(event->y());
chartPoint = chart()->mapToValue(inPoint);
handleMouseMoved(chartPoint);
}
void ScatterView::handleMouseMoved(const QPointF &point)
{
QPointF mousePoint = point;
qreal distance(0.2); //distance from mouse to point in chart axes
foreach (QPointF currentPoint, scatterSeries->points()) {
qreal currentDistance = qSqrt((currentPoint.x() - mousePoint.x())
* (currentPoint.x() - mousePoint.x())
+ (currentPoint.y() - mousePoint.y())
* (currentPoint.y() - mousePoint.y()));
if (currentDistance < distance) {
triggerPoint(currentPoint);
}
}
}
相关文章:
- 不计算一个范围内的完美数
- 我有一个数组,我想输入一个范围,然后找到范围内所有偶数的总和?
- 检查IP是否在其他IP网络范围内,并查找下一个可用IP
- 从大范围内生成一个随机数,但从大范围的中间开始生成较小的范围
- 为什么C++找不到布尔运算符,当有一个!范围内的运算符?
- C :在一个范围内计数偶数 /奇数
- 如何创建一个结构的实例,当它不在范围内时,该实例将不会被删除
- 如果地图擦除范围内的第一个和最后一个相等,则是否删除该元素
- 是否可以在全球范围内声明一个提升线程
- 在一个范围内的阵列中找到三胞胎
- 如何检查一个范围内的值是否是另一个范围内的值的倍数
- 正在检查排序列表中是否有一个范围内的数字
- 有一个标准的算法可以在一个范围内迭代吗
- 在一个范围内生成不同的随机数
- 使用srand(time(0))猜测一个范围内的数字
- Qt QXYSeries和ChartView -修改悬停行为在一个范围内触发
- 在一个范围内查找素数的直观方法
- 一个范围内的成功随机数
- 如何在C++的另一个范围内使用局部变量
- 将十进制数保持在一个范围内