#include "pushbuttontype.h"// 包含PushButtonType类的头文件
#include <QEvent>// 包含QEvent类的头文件，QEvent是Qt中用于表示事件的类

PushButtonType::PushButtonType(QWidget *parent)// PushButtonType类的构造函数
    : QPushButton(parent){}
      // 调用QPushButton的构造函数，并传入父窗口指针

bool PushButtonType::event(QEvent *event)// 重载event函数
{
    if (event->type() == QEvent::MouseButtonPress) {// 如果事件类型是鼠标按下
        setIcon(pressedIcon);// 设置按钮图标为按下状态下的图标
    }
    if (event->type() == QEvent::MouseButtonRelease) {// 如果事件类型是鼠标释放
        if (underMouse()) { // 如果鼠标在按钮范围内
            setIcon(hoveredIcon);// 设置按钮图标为鼠标悬停状态下的图标
        } else {
            setIcon(normalIcon); // 设置按钮图标为正常状态下的图标
        }
    }
    // 如果事件类型是鼠标进入
    if (event->type() == QEvent::Enter) {
        setIcon(hoveredIcon); // 设置按钮图标为鼠标悬停状态下的图标
    }
    // 如果事件类型是鼠标离开
    // 设置按钮图标为正常状态下的图标
    if (event->type() == QEvent::Leave) {
        setIcon(normalIcon);
    }
    // 调用QPushButton的event函数，继续处理其他事件
    return QPushButton::event(event);
}
// 设置按钮在按下状态下的图标
void PushButtonType::setPressedIcon(const QIcon &newPressedIcon)
{
    pressedIcon = newPressedIcon;// 更新按下状态下的图标
}
// 设置按钮在鼠标悬停状态下的图标
void PushButtonType::setHoveredIcon(const QIcon &newHoveredIcon)
{
    hoveredIcon = newHoveredIcon;// 更新鼠标悬停状态下的图标
}
// 设置按钮在正常状态下的图标
void PushButtonType::setNormalIcon(const QIcon &newNormalIcon)
{
    normalIcon = newNormalIcon; // 更新正常状态下的图标
    setIcon(newNormalIcon); // 并将按钮图标设置为正常状态下的图标
}
