效果图:
实现方法有两种,第一种是重载鼠标移入移出事件
void enterEvent(QEvent * event);
void leaveEvent(QEvent * event);
但是这种方法无法指定重载该函数的类中子窗口,因此不适合一些应用场景。
第二种方法就是事件过滤器eventFilter
该方法可以指定到某个控件
使用前需要在目标对象上安装该过滤器
ui.textEdit->installEventFilter(this);
实现代码
bool EditSlider::eventFilter(QObject * obj, QEvent * event)
{
if (obj == ui.textEdit && event->type() == QEvent::Leave)
ui.textEdit->verticalScrollBar()->hide();
else if (obj == ui.textEdit && event->type() == QEvent::Enter)
ui.textEdit->verticalScrollBar()->show();
return QWidget::eventFilter(obj, event);
}