|
|
|
@ -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); // 并将按钮图标设置为正常状态下的图标
|
|
|
|
|
}
|
|
|
|
|