zhangshuoshuo 1 month ago
parent 456515163c
commit a46534035c

@ -1,42 +1,47 @@
#include "pushbuttontype.h"
#include <QEvent>
#include "pushbuttontype.h"// 包含PushButtonType类的头文件
#include <QEvent>// 包含QEvent类的头文件QEvent是Qt中用于表示事件的类
PushButtonType::PushButtonType(QWidget *parent) : QPushButton(parent) { }
PushButtonType::PushButtonType(QWidget *parent)// PushButtonType类的构造函数
: QPushButton(parent){}
// 调用QPushButton的构造函数并传入父窗口指针
bool PushButtonType::event(QEvent *event)
bool PushButtonType::event(QEvent *event)// 重载event函数
{
if (event->type() == QEvent::MouseButtonPress) {
setIcon(pressedIcon);
if (event->type() == QEvent::MouseButtonPress) {// 如果事件类型是鼠标按下
setIcon(pressedIcon);// 设置按钮图标为按下状态下的图标
}
if (event->type() == QEvent::MouseButtonRelease) {
if (underMouse()) {
setIcon(hoveredIcon);
if (event->type() == QEvent::MouseButtonRelease) {// 如果事件类型是鼠标释放
if (underMouse()) { // 如果鼠标在按钮范围内
setIcon(hoveredIcon);// 设置按钮图标为鼠标悬停状态下的图标
} else {
setIcon(normalIcon);
setIcon(normalIcon); // 设置按钮图标为正常状态下的图标
}
}
// 如果事件类型是鼠标进入
if (event->type() == QEvent::Enter) {
setIcon(hoveredIcon);
setIcon(hoveredIcon); // 设置按钮图标为鼠标悬停状态下的图标
}
// 如果事件类型是鼠标离开
// 设置按钮图标为正常状态下的图标
if (event->type() == QEvent::Leave) {
setIcon(normalIcon);
}
// 调用QPushButton的event函数继续处理其他事件
return QPushButton::event(event);
}
// 设置按钮在按下状态下的图标
void PushButtonType::setPressedIcon(const QIcon &newPressedIcon)
{
pressedIcon = newPressedIcon;
pressedIcon = newPressedIcon;// 更新按下状态下的图标
}
// 设置按钮在鼠标悬停状态下的图标
void PushButtonType::setHoveredIcon(const QIcon &newHoveredIcon)
{
hoveredIcon = newHoveredIcon;
hoveredIcon = newHoveredIcon;// 更新鼠标悬停状态下的图标
}
// 设置按钮在正常状态下的图标
void PushButtonType::setNormalIcon(const QIcon &newNormalIcon)
{
normalIcon = newNormalIcon;
setIcon(newNormalIcon);
normalIcon = newNormalIcon; // 更新正常状态下的图标
setIcon(newNormalIcon); // 并将按钮图标设置为正常状态下的图标
}

@ -1,25 +1,25 @@
#ifndef PUSHBUTTONTYPE_H
#define PUSHBUTTONTYPE_H
#include <QPushButton>
#include <QPushButton> // 包含QPushButton类的头文件QPushButton是Qt中用于创建按钮的类
class PushButtonType : public QPushButton
class PushButtonType : public QPushButton// 定义PushButtonType类继承自QPushButton
{
Q_OBJECT
Q_OBJECT// 宏,用于支持信号和槽机制
public:
explicit PushButtonType(QWidget *parent = nullptr);
explicit PushButtonType(QWidget *parent = nullptr);// 构造函数,允许传入父窗口指针,默认为空
void setNormalIcon(const QIcon &newNormalIcon);
void setHoveredIcon(const QIcon &newHoveredIcon);
void setPressedIcon(const QIcon &newPressedIcon);
void setNormalIcon(const QIcon &newNormalIcon); // 设置按钮在正常状态下的图标
void setHoveredIcon(const QIcon &newHoveredIcon);// 设置按钮在鼠标悬停状态下的图标
void setPressedIcon(const QIcon &newPressedIcon);// 设置按钮在鼠标按下状态下的图标
protected:
bool event(QEvent *event) override;
bool event(QEvent *event) override;// 重载event函数用于处理各种事件
private:
QIcon normalIcon;
QIcon hoveredIcon;
QIcon pressedIcon;
QIcon normalIcon;// 私有成员变量,存储按钮在正常状态下的图标
QIcon hoveredIcon;// 私有成员变量,存储按钮在鼠标悬停状态下的图标
QIcon pressedIcon;// 私有成员变量,存储按钮在鼠标按下状态下的图标
};
#endif // PUSHBUTTONTYPE_H

Loading…
Cancel
Save