2017-02-14 204 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

好吧,無論如何,這是一個瘋狂的猜測,我編輯。 –