mousePressEvent正在运行,但mouseMoveEvent不正常

时间:2016-02-03 01:52:17

标签: c++ qt user-interface qgraphicsview

这两个事件在裸的mainWindow上都能正常工作,但当我按下要放在mainWindow中的graphicsView内部时,只有mousePressEvent响应。  enter image description here

任何人都可以澄清这个问题吗?

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();

}

1 个答案:

答案 0 :(得分:0)

这里有两个选项:

  1. QGraphicsView派生您自己的图形视图,并在那里实现鼠标移动事件处理程序。

  2. 创建事件过滤器并将其安装到QGraphicsView的视口(ui->graphicsView->viewport()->installEventFilter(...))中。请参阅QObject::eventFilter()文档。

  3. 当然,您还必须为QGraphicsView的视口启用鼠标跟踪:

    ui->graphicsView->viewport()->setMouseTracking(true);