1.由于直接设置hover样式无效,所以采用事件过滤器,判断当前滑动条状态,动态变换样式
//安装过滤器
scrollArea->verticalScrollBar()->installEventFilter(this);
//判断状态
bool eventFilter(QObject *obj, QEvent *event)
{
if (obj == scrollArea->verticalScrollBar())
{
if (event->type() == QEvent::HoverEnter)
{
scrollArea->verticalScrollBar()->setFixedWidth(10 );
//重新定义宽度
scrollArea->verticalScrollBar()->setProperty("STYLE_KEY", QString("SETTINGSSWBG_SCROLL_HOVER"));
//重载样式
scrollArea->verticalScrollBar()->style()->polish(scrollArea->verticalScrollBar());
//强制刷新样式
}
else if (event->type() == QEvent::HoverLeave)
{
scrollArea->verticalScrollBar()->setFixedWidth(4 );
scrollArea->verticalScrollBar()->setProperty("STYLE_KEY", QString("SETTINGSSWBG_SCROLL"));
scrollArea->verticalScrollBar()->style()->polish(scrollArea->verticalScrollBar());
}
}
return QDialog::eventFilter(obj,event);
}