zhangshuoshuo 5 months ago
parent 456515163c
commit a46534035c

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

@ -1,25 +1,25 @@
#ifndef PUSHBUTTONTYPE_H #ifndef PUSHBUTTONTYPE_H
#define 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: public:
explicit PushButtonType(QWidget *parent = nullptr); explicit PushButtonType(QWidget *parent = nullptr);// 构造函数,允许传入父窗口指针,默认为空
void setNormalIcon(const QIcon &newNormalIcon); void setNormalIcon(const QIcon &newNormalIcon); // 设置按钮在正常状态下的图标
void setHoveredIcon(const QIcon &newHoveredIcon); void setHoveredIcon(const QIcon &newHoveredIcon);// 设置按钮在鼠标悬停状态下的图标
void setPressedIcon(const QIcon &newPressedIcon); void setPressedIcon(const QIcon &newPressedIcon);// 设置按钮在鼠标按下状态下的图标
protected: protected:
bool event(QEvent *event) override; bool event(QEvent *event) override;// 重载event函数用于处理各种事件
private: private:
QIcon normalIcon; QIcon normalIcon;// 私有成员变量,存储按钮在正常状态下的图标
QIcon hoveredIcon; QIcon hoveredIcon;// 私有成员变量,存储按钮在鼠标悬停状态下的图标
QIcon pressedIcon; QIcon pressedIcon;// 私有成员变量,存储按钮在鼠标按下状态下的图标
}; };
#endif // PUSHBUTTONTYPE_H #endif // PUSHBUTTONTYPE_H

Loading…
Cancel
Save