Qcustomplot Отображение координат выбранных точек с помощью события мыши - PullRequest
0 голосов
/ 09 июля 2020

Мне нужно отобразить набор точек (почти 200) на моем настраиваемом графике. После этого, когда я нажимаю на указанную точку c, она должна отображать свои координаты с помощью события мыши. Событие мыши должно отображать координаты только тех точек, в которых я щелкаю, а не оставшуюся пустую область. Я пробовал использовать event-> pos (). X () для pixeltocoord. Но бесполезно. Мне нужна помощь в событии мыши.

1 Ответ

0 голосов
/ 09 июля 2020

Ваш вопрос немного расплывчатый, что означает «но не использовать»? Вы получили информацию о мероприятии, и информация не является полезной? или у вас никогда не было ивента? Или значение неверно для какой-то точки зрения? Это ваш собственный график QWidget? Что ж, я все равно пытаюсь ...

Если ваш собственный график является QWidget: Сначала вам нужно включить отслеживание мыши в своем виджете

CustomPlotWidget->setMouseTracking(true);

Затем вы должны сохранить координаты в событии нажатия мыши, вы делаете это, переопределив обработчик события

CustomPlotWidget::mousePressEvent(QMouseEvent *event)
{
   save_coords=event->pos;
}

Затем, когда вы рисуете виджет, который используете, эти координаты, чтобы отобразить там какой-то текст, или вы можете вставить QToolTip в этом месте (это то, что я делаю, и это выглядит очень красиво)

Согласно вашему комментарию, если вы пошли с Решение рисовать себе координаты вам просто нужно перерисовать участок, где вы их ранее рисовали. Вы можете сохранить область rect angular при рисовании раньше, затем вы перерисуете все, что находится под этой областью, кроме координат.

CustomPlotWidget::mousePressEvent(QMouseEvent *event)
{
   ...
   save_coords=event->pos;
   update(areaWhereYouPreviouslyDrawCoordinates);
   update(areaWhereYouWantToDrawNewCoordinates);
}
CustomPlotWidget::paintEvent(QPaintEvent *event)
{
...
   if (event->rect().insersect(areaWhereYouWantToDrawNewCoordinates))
   {
        drawCoordinates();
        areaWhereYouPreviouslyDrawCoordinates=areaWhereYouWantToDrawNewCoordinates;
   }
...
}

Если вы go с решением, использующим QToolTip:

CustomPlotWidget::mousePressEvent(QMouseEvent *event)
{
   ...
   if (needToDrawCoordinates)
        QToolTip::showText(Where,Coordinates);
   else
        QToolTip::hideText();
}
...