最近做的項目中,由於重寫界面標題欄,需要自己實現鼠標拖動界面放大縮小的功能,所以就需要捕獲鼠標移動事件。
在網上查了一些資料,很多都說通過setMouseTracking(true);的方式開啟鼠標跟蹤,並且把所有子控件的該狀態也打開。但是效果並不好。
最終找到一個方法,在構造時調用以下代碼。
//使用此方法開啟鼠標移動事件不會被子控件覆蓋
setAttribute(Qt::WA_Hover, true);
然后重載下面的函數,在里面實現功能:
bool event(QEvent* event);
{
if (event->type() == QEvent::HoverMove) {
//具體實現
}
return QDialog::event(event);
}
