更改扁平QPushButton悬停状态的样式(不使用样式表)

101*_*101 3 qt pyqt hover qtstylesheets qpushbutton

Flat QPushButtons没有鼠标悬停的迹象.有没有办法为平面按钮悬停状态设置样式,以便它匹配正常按钮悬停状态(或类似的东西)的样式?

QPushButton类型

如果它意味着偏离默认外观或者必须从头开始设计按钮样式,我不想使用样式表.

Jac*_*ieg 5

一种方法是推导QPushButton:

pushbutton.h:

#ifndef PUSHBUTTON_H
#define PUSHBUTTON_H

#include <QPushButton>

class PushButton : public QPushButton
{
    Q_OBJECT
public:
    explicit PushButton(QWidget *parent = 0);

protected:
    bool event(QEvent * event);

};

#endif // PUSHBUTTON_H
Run Code Online (Sandbox Code Playgroud)

pushbutton.cpp:

#include "pushbutton.h"

#include <QEvent>

PushButton::PushButton(QWidget *parent) :
    QPushButton(parent)
{
    setFlat(true);
}

bool PushButton::event(QEvent *event)
{
    if(event->type() == QEvent::HoverEnter)
    {
        setFlat(false);
    }

    if(event->type() == QEvent::HoverLeave)
    {
        setFlat(true);
    }

    return QPushButton::event(event);
}
Run Code Online (Sandbox Code Playgroud)