Qt: Как найти положение щелчка мышью относительно изображения - PullRequest
0 голосов
/ 08 ноября 2018

Я хотел бы реализовать редактор изображений.У меня есть QPixmap в QLabel в QHBoxLayout.Я переопределил mousePressEvent в родительском виджете.Когда происходит mousePressedEvent,

 event->pos() = QPoint(271,115)

указывает на место, которое смещено относительно указателя (мыши).Смещение - это расстояние QLabel от угла QWidget.Это становится больше, когда я изменяю размер окна.Как мне найти этот вектор смещения?Я хочу нарисовать пиксель на QPixmap именно там, где находится мышь.Обратите внимание, что следующие методы не помогают:

qDebug() << "event->pos()" << event->pos();
qDebug() << "this->pos() = " << this->pos();
qDebug() << "pm_imageLabel->pos() =" << pm_imageLabel->pos();
qDebug() << "pos = " << mapFromGlobal(QCursor::pos());

Они дают разные позиции.Никакие поиски в интернете или в документации Qt не приблизили меня к ответу.Заранее спасибо.

1 Ответ

0 голосов
/ 08 ноября 2018

Наконец-то я понял это частично с помощью Ваханчо.Положение QPixmap внутри QLabel сложно определить, но я могу запретить QLabel изменять размер.Поэтому я установил размер QLabel равным размеру изображения.

pm_imageLabel->setPixmap(m_pixmap);
pm_imageLabel->setFixedSize(m_pixmap.size());

и переопределил mousePressed даже внутри класса QLabel.Таким образом, событие -> правильное.

Спасибо.

...