需求
当鼠标移动到ui.timeWidget
上时,鼠标变为手指样式,其它位置是原始箭头样式。
代码
- 头文件内声明
eventFilter
函数
bool eventFilter(QObject* watched, QEvent* event);
- 构造函数内,添加代码,安装事件过滤器
// 安装事件过滤器
ui.timeWidget->installEventFilter(this);
- 定义
eventFilter
函数
bool xxxxxxxxxx::eventFilter(QObject* watched, QEvent* event)
{
// 在控件内绘制(与此blog无关,可不用看)
if (watched == ui.timeWidget && event->type() == QEvent::Paint)
{
show_timeAxis(); //响应函数
}
// 判断鼠标是否位于控件上
if (watched == ui.timeWidget && event->type() == QEvent::Enter)
{
ui.timeWidget->setCursor(Qt::PointingHandCursor); // 范围内为手指样式
}
else
this->setCursor(Qt::ArrowCursor); //范围之外变回原来箭头样式
return QWidget::eventFilter(watched, event);
}
备注
同时可实现,仅在控件ui.timeWidget
上绘制图形