1. 程式人生 > 實用技巧 >Qt 跟蹤滑鼠事件:setMouseTracking(true)

Qt 跟蹤滑鼠事件:setMouseTracking(true)

mouseTracking:bool

Qt Assistant 解釋:

該屬性用來設定某個控制元件是否被跟蹤軌跡。

If mouse tracking is disabled (the default), the widget only receives mouse move events when at least one mouse button is pressed while the mouse is being moved.

如果該屬性設定fasle,這個控制元件就算正在移動,也僅僅只有滑鼠pressed按下之後,才會接受滑鼠移動事件。

If mouse tracking is enabled, the widget receives mouse move events even if no buttons are pressed.

如果該屬性是true,就算該按鈕不被按下,它也會一直接受滑鼠移動的事件。

所以想要實現mouseMoveEvent,若是setMouseTrack(true),直接可以得到監聽事件。若是setMouseTrack(false),只有滑鼠按下才會有mouseMove監聽事件響應。

 1 ....
 2 
 3 test.widget.setMouseTrack(true);
 4 
 5 ....
 6 
 7 /**
 8 
 9 * @brief 滑鼠滑動事件
10 
11 */
12 
13 void TestWidget::mouseMoveEvent(QMouseEvent* event
) 14 15 { 16 17 QPoint m = event->globalPos(); 18 19 ui.lblMouseEventGlobalPos->setText(QString("(%1,%2)").arg(m.x()).arg(m.y())); 20 21 QPoint n = QCursor::pos(); 22 23 ui.lblCursorPos->setText(QString("(%1,%2)").arg(m.x()).arg(m.y())); 24 25 26 27 }