向我的QGraphicsScene

时间:2018-11-08 10:07:34

标签: c++ qt hover point

基本上,我试图在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));

}

1 个答案:

答案 0 :(得分:1)

QPointF是一个数据对象;它不提供任何图形表示(我强烈建议您不要继承它来添加一个)。

一种可能的方法是覆盖QGraphicsScene::mouseMoveEvent()QGraphicsScene::mousePressEvent()函数,使您可以监听用户的移动和点击位置,并对此做出反应。不过,可能有更好的方法可以这样做-到目前为止,我只需要对点击(而不是悬停)做出反应,所以我的经验有限。