Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Raumnur от Июль 07, 2016, 17:46



Название: Координаты мыши на графике QCustomPlot
Отправлено: Raumnur от Июль 07, 2016, 17:46
Всем привет!
Проблема, сидел сам пытался, гуглил, беспонту все.
Буду рад подсказкам, судь проблемы:
Пытаюсь считать координаты мыши с графика QCustomPlot и записать в lineEdit. Для этого использую setMouseTracking(true) и void MainWindow::mouseMoveEvent(QMouseEvent *event). НО! Единственное откуда считывает координаты, это centralwidget. Думал вопрос в классе, вроде нет. Бросал на форму обычный QWidget и тоже по нулям. Заделывать QCustomPlot под centralwidget пробовал. Таким образом график просто разносится на всю форму закрывая собой абсолютно все. Что можете подсказать?


Название: Re: Координаты мыши на графике QCustomPlot
Отправлено: gil9red от Июль 07, 2016, 18:22
Используйте фильтр. Гуглите "Qt фильтры", "Qt event filter" и после, в обработчике событий ловите событие перемещения мышки


Название: Re: Координаты мыши на графике QCustomPlot
Отправлено: Dimas от Июль 24, 2016, 22:23
Если еще интересно. Тоже потребовалось вывести координаты из QCustomPlot.

Сделал так в инициализации:
Код:
  connect(ui->customPlot, SIGNAL(mouseMove(QMouseEvent*)), this, SLOT(mouseMove(QMouseEvent*)));

Обработчик SLOTа:

Код:
void MainWindow::mouseMove(QMouseEvent *mouseEvent)
{
    qDebug() << ui->customPlot->xAxis->pixelToCoord(mouseEvent->pos().x())
                 << ui->customPlot->yAxis->pixelToCoord(mouseEvent->pos().y());

    QToolTip::showText(mouseEvent->globalPos(),
                       "xAxis=" + QString::number(ui->customPlot->xAxis->pixelToCoord(mouseEvent->pos().x()), 'f', 2) + "\n" +
                       "yAxis=" + QString::number(ui->customPlot->yAxis->pixelToCoord(mouseEvent->pos().y()), 'f', 2) + "\n" +

                       "xAxis2=" + QString::number(ui->customPlot->xAxis2->pixelToCoord(mouseEvent->pos().x()), 'f', 2) + "\n" +
                       "yAxis2=" + QString::number(ui->customPlot->yAxis2->pixelToCoord(mouseEvent->pos().y()), 'f', 2) + "\n",
                       this, rect());
}