我需要在自定义绘图上显示一组点(近200个(。之后,当我点击一个特定的点时,它应该使用鼠标事件显示其坐标。鼠标事件应该只能显示我单击的那些点坐标,而不能显示剩余的空白区域。我已尝试使用事件->pos((.x((转换为像素字。但没有用。我在鼠标事件中需要帮助。
你的问题有点模糊,"但不使用"的意思是什么?您是否收到了该事件,而该信息没有用处?或者你从来没有参加过活动?或者从某种角度来看,价值观是错误的?这是你的自定义绘图QWidget吗?好吧,我无论如何都会努力。。。
如果您的自定义绘图是QWidget:
首先,您需要在小部件中启用鼠标跟踪
CustomPlotWidget->setMouseTracking(true);
然后,您应该将坐标存储在鼠标按下事件中,您可以通过重写事件处理程序来实现这一点
CustomPlotWidget::mousePressEvent(QMouseEvent *event)
{
save_coords=event->pos;
}
然后,当你绘制小部件时,你可以使用坐标在那里显示一些文本,或者你可以在那个位置弹出一个QToolTip(这就是我所做的,看起来真的很好(
根据你的评论,如果你自己绘制坐标的解决方案,你只需要重新绘制之前绘制坐标的部分。您可以在之前绘制时存储矩形区域,然后重新绘制该区域下除坐标以外的所有内容。
CustomPlotWidget::mousePressEvent(QMouseEvent *event)
{
...
save_coords=event->pos;
update(areaWhereYouPreviouslyDrawCoordinates);
update(areaWhereYouWantToDrawNewCoordinates);
}
CustomPlotWidget::paintEvent(QPaintEvent *event)
{
...
if (event->rect().insersect(areaWhereYouWantToDrawNewCoordinates))
{
drawCoordinates();
areaWhereYouPreviouslyDrawCoordinates=areaWhereYouWantToDrawNewCoordinates;
}
...
}
如果您使用QToolTip:的解决方案
CustomPlotWidget::mousePressEvent(QMouseEvent *event)
{
...
if (needToDrawCoordinates)
QToolTip::showText(Where,Coordinates);
else
QToolTip::hideText();
}