鼠标悬停时的QScrollBar
QScrollBar on mouse hover
我想更改 QScrollBar
鼠标悬停时的样式。我试图通过添加 eventFilter
来让它工作,但它不起作用。
代码:
qApp->installEventFilter(this);
bool Test::eventFilter(QObject *object, QEvent *event)
{
if (event->type() == QEvent::Scroll) {
QScrollEvent *scrollEvent = static_cast<QScrollEvent*>(event);
if (scrollEvent->scrollState() == QScrollEvent::Enter) {
qDebug() << "Enter";
this->setStyleSheet("QScrollBar:vertical {width: 20px;}");
}
if (scrollEvent->scrollState() == QScrollEvent::Leave) {
qDebug() << "Leave";
this->setStyleSheet("QScrollBar:vertical {width: 12px;}");
}
}
return QObject::eventFilter(object, event);
}
我该怎么做?
事件过滤器中要处理的正确事件实际上是 QEvent::Enter 和 QEvent::Leave。 QScrollEvent在真正发生滚动时使用,这就是它没有被触发的原因。
您也可以直接使用带有 :hover 属性的样式表。
我想更改 QScrollBar
鼠标悬停时的样式。我试图通过添加 eventFilter
来让它工作,但它不起作用。
代码:
qApp->installEventFilter(this);
bool Test::eventFilter(QObject *object, QEvent *event)
{
if (event->type() == QEvent::Scroll) {
QScrollEvent *scrollEvent = static_cast<QScrollEvent*>(event);
if (scrollEvent->scrollState() == QScrollEvent::Enter) {
qDebug() << "Enter";
this->setStyleSheet("QScrollBar:vertical {width: 20px;}");
}
if (scrollEvent->scrollState() == QScrollEvent::Leave) {
qDebug() << "Leave";
this->setStyleSheet("QScrollBar:vertical {width: 12px;}");
}
}
return QObject::eventFilter(object, event);
}
我该怎么做?
事件过滤器中要处理的正确事件实际上是 QEvent::Enter 和 QEvent::Leave。 QScrollEvent在真正发生滚动时使用,这就是它没有被触发的原因。
您也可以直接使用带有 :hover 属性的样式表。