добавить возможности наведения / ввода / выхода для элемента в моей QGraphicsScene - PullRequest
0 голосов
/ 08 ноября 2018

В основном я пытаюсь реализовать событие Hover на QPointF, мне нужно, чтобы оно было активным или, по крайней мере, было подсвечено.

Я пытался создать собственную точку, начав с наследования от QPointF, а затем добавил методы наведения, ввода и выхода, как описано в этого урока , но он не работает. Кроме того, это основано на общем QWidget, а не на точках.

У вас есть какие-нибудь подсказки / ресурсы? Гугл указывает мне на несколько бесполезных высказываний, и страница Qt, относящаяся к HoverEvent, не приспособлена для примеров.

спасибо!

EDIT

Требуется дополнительная информация. Я пытаюсь нарисовать прямоугольник в сцене. Прямоугольник имеет тип 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 голосов
/ 08 ноября 2018

QPointF - объект данных; он не дает графического представления вообще (и я настоятельно рекомендую вам не наследовать его, чтобы добавить один).

Один из возможных способов сделать это - переопределить функции QGraphicsScene::mouseMoveEvent() и QGraphicsScene::mousePressEvent(), позволяя прослушивать, куда пользователь перемещается и щелкает, и реагируя на это. Хотя, возможно, есть и лучшие способы сделать это - мне нужно было пока реагировать только на щелчки (а не на зависания), поэтому мой опыт ограничен.

...