2017-02-14 203 views
1

我想在鼠标悬停上更改QScrollBar样式。我试图通过添加eventFilter来实现它,但它不起作用。QScrollBar在鼠标悬停上

代码:

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); 
} 

我怎样才能做到这一点?

+0

http://stackoverflow.com/questions/23659134/qt-widen-qscrollbar-when-hover-using-stylesheet – Edward

回答

2

在事件过滤器中处理的正确事件实际上是QEvent :: Enter和QEvent :: Leave。当滚动实际发生时使用QScrollEvent,这就是为什么它没有被触发。

您也可以直接使用带有:hover属性的样式表。

+0

我试过:悬停属性与样式表,但它不起作用。 – Cobra91151

+0

好吧,无论如何,这是一个疯狂的猜测,我编辑。 –