基本上,我试图在QPointF上实现Hover事件,我需要它可以单击或至少以某种方式突出显示。
我尝试过的工作是从QPointF继承开始创建一个自定义点,然后按照this tutorial中所述添加hover,enter和leave方法,但是它不起作用。同样,tut基于通用QWidget,而不是专门基于点。
你们有一些提示/资源吗? google指出了一些没有用的tut,并且针对HoverEvent的Qt页面没有针对示例进行量身定制。
谢谢!
编辑
需要更多信息。我正在尝试在场景中绘制一个矩形。矩形的类型为QPolygonF
,场景的类型为QGraphicsScene
。
在用于根据点列表创建多边形并将其包含在场景中的代码块下面:
void
MyDialog::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPolygonF poly;
QPointF first;
for(int i = 0;i < points->size();i++)
{
double length = points->at(i).split(",").at(0).toDouble();
double rad = qDegreesToRadians( points->at(i).split(",").at(1).toDouble());
QPointF pt(length * qCos(rad),length * qSin(rad));
if(i == 0) first = pt;
poly << pt;
}
poly << first;
scene->addPolygon(poly,QPen(),QBrush(Qt::green,Qt::SolidPattern));
}
答案 0 :(得分:1)
QPointF
是一个数据对象;它不提供任何图形表示(我强烈建议您不要继承它来添加一个)。
一种可能的方法是覆盖QGraphicsScene::mouseMoveEvent()
和QGraphicsScene::mousePressEvent()
函数,使您可以监听用户的移动和点击位置,并对此做出反应。不过,可能有更好的方法可以这样做-到目前为止,我只需要对点击(而不是悬停)做出反应,所以我的经验有限。