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.