不要在悬停时突出显示 Qt 按钮

Do not highlight a Qt button on hover

我想让 QPushButton 看起来完全一样,无论鼠标当前是否悬停在它上面,或者如果不可能,使按钮的背景颜色不变悬停时不会改变。到目前为止我已经尝试过了,

QPushButton::hover { background-color: palette(button); }

palette() 似乎也没有其他选项可以满足我的要求。

我可以建议 - 不要尝试覆盖 hover 的默认样式表 - 安装一个 eventFilter 来过滤掉所有 QEvent::HoverEnter。例如,在某处添加这样一个微小的class:

class ButtonEventFilter : public QObject
{
    Q_OBJECT

protected:
    bool eventFilter(QObject *obj, QEvent *event) override
    {
        Q_UNUSED(obj)
        if (event->type() == QEvent::HoverEnter)
        {
            return true;
        }

        return false;
    }
};

然后将此过滤器安装为:

ui->pushButton->installEventFilter(new ButtonEventFilter);

然后,将不会有 hover 事件,因此您的 QPushButton 将保持不变。

===================

如果您正在使用 Python:

class ButtonEventFilter(QObject):
    def eventFilter(self, obj, event):
        if event.type() == QEvent.HoverEnter:
            return True
        return False

然后安装过滤器:

filter = ButtonEventFilter(self)
self.ui.pushButton.installEventFilter(filter)

来自文档的示例: https://doc.qt.io/qtforpython/PySide2/QtCore/QObject.html#PySide2.QtCore.PySide2.QtCore.QObject.eventFilter

记得导入 QObjectQEvent。如果您使用的是 PySide 2:

from PySide2.QtCore import QObject, QEvent