【问题标题】:QScrollBar on mouse hover鼠标悬停时的 QScrollBar
【发布时间】:2017-02-15 21:07:50
【问题描述】:

我想在鼠标悬停时更改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);
}

我该怎么做?

【问题讨论】:

标签: c++ qt windows-applications


【解决方案1】:

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

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

【讨论】:

  • 我试过 :hover 属性与样式表,但它不起作用。
猜你喜欢
  • 2011-08-04
  • 2018-09-03
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 2015-04-22
相关资源
最近更新 更多