в основном я пытаюсь реализовать событие Hover на QPointF, мне нужно, чтобы оно было кликабельным или хотя бы каким-то образом выделенным.
Я попытался создать собственную точку, начав с наследования от QPointF, а затем добавив методы hover, enter и оставлять, как описано в этот урок, Но это не работает. Кроме того, это основано на общем QWidget, а не на точках.
у вас есть какие-нибудь советы / ресурсы? Google указывает на некоторые бесполезные слова, а страница Qt, относящаяся к HoverEvent, не приспособлена для примеров.
Спасибо!
РЕДАКТИРОВАТЬ
Требуется больше информации. Я пытаюсь нарисовать прямоугольник в сцене. Прямоугольник имеет тип 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));
}
QPointF
является объектом данных; он не предоставляет никакого графического представления вообще (и я настоятельно рекомендую вам не наследовать его, чтобы добавить один).
Один из возможных способов сделать это — переопределить QGraphicsScene::mouseMoveEvent()
а также QGraphicsScene::mousePressEvent()
функции, позволяющие прослушивать, куда пользователь перемещается и щелкает, и реагировать на это. Однако, возможно, есть лучшие способы сделать это — мне до сих пор нужно было реагировать только на нажатия (а не на зависания), поэтому мой опыт ограничен.
Других решений пока нет …