2016-02-03 55 views
0

這兩個事件在裸露的mainWindow上都能正常工作,但是當我按下graphicsView內部時,放置在mainWindow內部,只有mousePressEvent正在響應。 enter image description heremousePressEvent正在工作,但mouseMoveEvent不是

有沒有人可以澄清這個問題?

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

不能肯定說沒有看到的來源,但你在小部件使鼠標跟蹤?否則,默認情況下,只有當鼠標按鈕被按下時,mouseMoveEvent纔會被觸發。 – MrEricSir

+0

yes在UI中啓用 –

+1

嘗試'setMouseTracking(true)'。 – hank

回答

0

你這裏有兩種選擇:

  1. 派生您自己的圖形來自QGraphicsView查看和執行鼠標移動事件處理程序存在。

  2. 創建事件過濾器並將其安裝到您的QGraphicsView的視口(ui->graphicsView->viewport()->installEventFilter(...))中。請參閱QObject::eventFilter()文檔。

和當然,您必須啓用鼠標跟蹤也爲的QGraphicsView的視口:

ui->graphicsView->viewport()->setMouseTracking(true); 
相關問題