这两个事件在裸的mainWindow上都能正常工作,但当我按下要放在mainWindow中的graphicsView内部时,只有mousePressEvent响应。
任何人都可以澄清这个问题吗?
UPD :这是代码
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "mydialog.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
scene = new QGraphicsScene(this);
ui->graphicsView->setScene(scene);
pix = new QPixmap("/Users/mac/Pictures/wallpaper/Rocks.jpg");
scene->addPixmap(*pix);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::mousePressEvent(QMouseEvent *e)
{
sel_reg_beg_x = e->x();
sel_reg_beg_y = e->y();
qDebug() << "inside press";
}
void MainWindow::mouseMoveEvent(QMouseEvent *e)
{
qDebug() << "inside move";
sel_reg_end_x = e->x();
sel_reg_end_y = e->y();
this->update();
}
答案 0 :(得分:0)
这里有两个选项:
从QGraphicsView
派生您自己的图形视图,并在那里实现鼠标移动事件处理程序。
创建事件过滤器并将其安装到QGraphicsView的视口(ui->graphicsView->viewport()->installEventFilter(...)
)中。请参阅QObject::eventFilter()
文档。
当然,您还必须为QGraphicsView的视口启用鼠标跟踪:
ui->graphicsView->viewport()->setMouseTracking(true);