diff --git a/source/src/pushbuttontype.cpp b/source/src/pushbuttontype.cpp index df5a840..d9053d7 100644 --- a/source/src/pushbuttontype.cpp +++ b/source/src/pushbuttontype.cpp @@ -1,42 +1,47 @@ -#include "pushbuttontype.h" -#include +#include "pushbuttontype.h"// 包含PushButtonType类的头文件 +#include // 包含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); // 并将按钮图标设置为正常状态下的图标 } diff --git a/source/src/pushbuttontype.h b/source/src/pushbuttontype.h index 60898ff..958045b 100644 --- a/source/src/pushbuttontype.h +++ b/source/src/pushbuttontype.h @@ -1,25 +1,25 @@ #ifndef PUSHBUTTONTYPE_H #define PUSHBUTTONTYPE_H -#include +#include // 包含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