Pobieranie współrzędnych z wykresu funkcji.

0

Witam, mam taki problem który do końca nie wiem jak rozwiązać.
Chciałbym uzyskać dokładny punkt na moim wykresie z danymi.
W QMainWindow umieściłem pole Widget, do którego wsadziłem Graphics View, w tym umieszczone jest QGraphicsScene, a w scenie umieszczony jest QChart stworzony na podstawie QSplineSeries.

Napisałem sobie funkcję, która zmienia mi pozycję myszy oraz pozycję w jakim widgecie się jest.

bool window::eventFilter(QObject *obj, QEvent *event)
{
    eventM = event;
    if (event->type() == QEvent::MouseMove)
      {
        QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);

        coordX = mouseEvent->pos().x();
        coordY = mouseEvent->pos().y();

        if(rect().contains(mapFromGlobal(QCursor::pos())))//czy mysz jest w oknie
        {
            QTabBar *widget =(QTabBar*) qApp->widgetAt(QCursor::pos());
            coordXElement = widget->x();
            coordXElement = widget->y();
        }
      }
    return false;
}

Teraz na podstawie kordów chciałbym wiedzieć w jaką wartość najeżdżam dokładnie na wykresie.
Znalazłem taką funkcję:

QPointF x = m_chart->mapFromScene(QPointF(coordX, coordY));

Tylko zwraca mi ona pozycję w widgecie, co prawda mógłbym wyliczać to ręcznie, ale przy skalowaniu okna może być to uciążliwe i wygląda to dla mnie na mało profesjonalne.
Chciałbym się dowiedzieć jak to zrobić poprawnie, tak aby podawało mi konkretne wartości z mojego wykresu.

1

Radzę najpierw zacząć od czytania i wertowania dokumentacji (nie to, że się czepiam, ale umiejętność ta jest ważna i trzeba się jej nauczyć).
Ta funkcjonalność jest już zrobiona, ale jest zrealizowana w innej klasie niż się spodziewasz.
Mało tego taki temat już tutaj był (z mc temu).
https://doc.qt.io/qt-5/qxyseries.html#clicked
https://doc.qt.io/qt-5/qxyseries.html#hovered

0

Rzeczywiście wystarczyło napisać tylko jakąś funkcję i połączyć ją z sygnałem i slotem.

connect(series, &QLineSeries::clicked, this, &window::coords);

Tylko tutaj mam pytania:

  1. Korzystam z timera, aby cyklicznie włączać daną funkcję. Chcę dzięki niej nanosić dane plus przenosić naciśnięte kropki.
    Gdy zatrzymam timer funkcja kliknięcia działa, lecz gdy go uruchomię to już funkcja niestety nie działa tak jak bym chciał.
  2. Czy jest jeszcze możliwość, aby pobierać współrzędne tam gdzie nie ma naszego wykresu? W sensie jak mam np prostą y=2 a chcę dodać punkt w (10,10) przez kliknięcie myszy to jak mogę to zrobić?
  3. Staram się czytać dokumentację, ale jakoś powoli mi z tym idzie, macie jakieś dobre rady aby sprawnie się poruszać po dokumentacjach?

1 użytkowników online, w tym zalogowanych: 0, gości: 1