Привет, мне нужно нарисовать прямоугольник над Qlabel, в качестве первого шага я пытаюсь получить события мыши. Используя приведенный ниже код, событие вызывается, но координаты всегда одинаковы, даже если я изменил положение мыши.Координаты мыши Qt на ярлыке
Также мне нужно установить отслеживание мыши только на Qlabel, и он отлично работает, за исключением мыши, функция mouseReleaseEvent
получает вызов, когда мышь выйдет за пределы Qlabel.
Также смотрите комментарии в коде ниже,
ImageEditer::ImageEditer(QWidget *parent) :
QDialog(parent),
ui(new Ui::ImageEditer)
{
ui->setupUi(this);
ui->label_image->setMouseTracking(true); // need to set the mouse tracking over this label
}
void ImageEditer::mouseMoveEvent(QMouseEvent* event)
{
qDebug() << "Mouse move.." << pos() << "---> " << x() << "," << y(); // these printing same values
}
void ImageEditer::mousePressEvent(QMouseEvent* event)
{
qDebug() << "Mouse press.." << pos() << "---> " << x() << "," << y(); // these printing same values
}
// This getting called when release the mouse outside the label_image
void ImageEditer::mouseReleaseEvent(QMouseEvent *event)
{
qDebug() << "Mouse release.." << pos() << "---> " << x() << "," << y(); // these printing same values
}
Вы правы, моя глупая ошибка, и есть ли у вас какие-либо идеи о 'mouseReleaseEvent', вызываемом при выпуске мыши вне Qlabel. – Haris
Что я знаю, когда вы нажимаете и удерживаете, виджет станет «мишенью», пока вы его не отпустите. Но чтобы пропустить это, в событии release вы можете просто проверить, не находится ли pos вне геометрии виджета. – yshurik
Хорошо, спасибо, я понимаю. – Haris