2017-02-14 4 views
1

Ich möchte QScrollBar Stil auf Maus Hover ändern. Ich habe versucht, es funktioniert zu bekommen, indem ich eventFilter hinzufüge, aber es funktioniert nicht.QScrollBar auf Maus Hover

Code:

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

Wie kann ich das tun?

+0

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

Antwort

2

Die richtigen Ereignisse in Ihrem Ereignisfilter würden tatsächlich QEvent :: Enter und QEvent :: Leave sein. QScrollEvent wird verwendet, wenn das Scrollen tatsächlich stattfindet, deshalb wurde es nicht ausgelöst.

Sie können Stylesheets wahrscheinlich auch direkt mit dem Attribut: hover verwenden.

+0

Ich habe versucht: Hover-Attribut mit Stylesheets, aber es funktioniert nicht. – Cobra91151

+0

Ok, das war eine wilde Vermutung, ich bearbeite das. –