1. 程式人生 > 其它 >mouseMoveEvent事件無法響應滑鼠move事件

mouseMoveEvent事件無法響應滑鼠move事件

技術標籤:QTc++

問題描述

  • 1.mouseMoveEvent無法捕獲滑鼠的實時狀態,只有在點選左鍵後才能響應。

解決方法

  • 1.實現mouseMoveEvent的實時響應,則需要在建構函式中新增setMouseTrack(true),直接得到監聽事件。若是setMouseTrack(false),只有滑鼠按下才會有mouseMove監聽事件響應。但是如果有多個視窗的話需要對每個視窗進行設定setMouseTrack(true)。
  • 2.可以使用setAttribute( Qt::WA_Hover,true)實現對滑鼠的實時監控,將其放在建構函式中,相對於setMouseTracking(true)來說,它可以彌補滑鼠事件被子窗體獲取的問題。

示例

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    
     setWindowFlags(Qt::FramelessWindowHint | Qt::Dialog);
    setAttribute(Qt::WA_TranslucentBackground);
    setAutoFillBackground(true);
    
	setAttribute( Qt::WA_Hover,true);
}

bool
QWidget::event(QEvent *event) { if(event->type() == QEvent::HoverEnter ||event->type() == QEvent::HoverLeave||event->type() == QEvent::HoverMove ) { setCursor(Qt::SizeHorCursor); } return QWidget::event(event); }