可交互的创意动态按钮
===
## 特点
- 所有颜色自定义
- 鼠标悬浮渐变
- 两种点击效果:鼠标点击渐变 / 水波纹动画(可多层波纹叠加)
- 额外鼠标移入/移出/按下/弹起的实时/延迟共8种事件
- 鼠标悬浮图标位置主动变化
- 鼠标拖动图标抖动反弹效果
- 鼠标进入父控件时开启出现效果,或启动时出现
- 延迟出现的动画效果(多个按钮连续)
- 记录开关状态
- 直接设置 x、y 的圆角显示
- 边框颜色设置
- 禁用时半透明+点击穿透效果
- 添加额外的边缘角标
- 三种前景模式:图标、文字、带遮罩的图标(任意变色)
- 支持QSS直接设置部分属性
- 与父类 QPushButton 兼容
- 时间准确性:根据时间戳计算动画进度,即使在低性能机器上也可准时完成动画
- 稳定性:一按钮多功能,完美兼容多种情况下焦点事件
- 极其强大的可扩展性,继承该按钮后可任意修改显示效果和动画效果
## 截图
![截图](pictures/picture.gif)
## 用法
```C++
// 方框按钮
InteractiveButtonBase* btn = new InteractiveButtonBase("text", this);
btn->setGeometry(300, 300, 100, 100);
```
```C++
// 圆形按钮带图标,以及鼠标靠近(父控件悬浮)出现动画
icon_btn = new WaterCircleButton(QIcon(":/icons/point_menu"), this);
icon_btn->setGeometry(100, 50, 32, 32);
icon_btn->setShowAni(true); // 调用showForeground2时出现动画
```
```C++
// 自定义颜色按钮(遮罩效果)
InteractiveButtonBase* pixmap_btn = new InteractiveButtonBase(QPixmap(":/icons/point_menu"), this);
pixmap_btn->setGeometry(132, 50, 32, 32);
```
```C++
// 椭圆形按钮
InteractiveButtonBase* float_btn = new WaterFloatButton("text", this);
float_btn->setGeometry(164, 50, 100, 32);
float_btn->setBgColor(QColor(102,51,204,192), QColor(102,51,204,255));
```
```C++
// 自定义按钮(win最小化按钮)
WinMenuButton* menu_btn = new WinMenuButton(this);
menu_btn->setGeometry(368, 10, 32, 32);
```
## API
只说明一下常用的方法,具体可参考 `interactivebuttonbase.h`:
```C++
// 设置文本(同QPushButton)
void setText(QString text);
// 设置Icon
void setIcon(QIcon icon);
// 设置Pixmap,会根据 icon_color 自动变色
void setPixmap(QPixmap pixmap);
// 设置额外扩展的角标,比如右边扩展小箭头、右上角标签、左边图标等
virtual void setPaintAddin(QPixmap pixmap, Qt::Alignment align = Qt::AlignRight, QSize size = QSize(0, 0));
// 调整各种动画时长
void setHoverAniDuration(int d);
void setPressAniDuration(int d);
void setClickAniDuration(int d);
void setWaterAniDuration(int press, int release, int finish);
// 是否启用水波纹,false则改为渐变
void setWaterRipple(bool enable = true);
void setJitterAni(bool enable = true);
// 设置无交互时的背景颜色
void setBgColor(QColor bg);
// 设置hover和press两种状态的背景颜色,与背景叠加
// press会和hover以及默认背景再叠加
void setBgColor(QColor hover, QColor press);
// 单独设置各种颜色
void setNormalColor(QColor color);
void setBorderColor(QColor color);
void setHoverColor(QColor color);
void setPressColor(QColor color);
// 设置前景颜色
void setIconColor(QColor color = QColor(0, 0, 0));
void setTextColor(QColor color = QColor(0, 0, 0));
void setFocusBg(QColor color);
void setFocusBorder(QColor color);
// 设置字体大小
// 如果已设置 setTextDynamicSize(true),那么会有改变动画
void setFontSize(int f);
// 前景对齐方式
void setAlign(Qt::Alignment a);
// 设置圆角
void setRadius(int r);
void setRadius(int rx, int ry);
// 设置边界宽度(默认0,透明)
void setBorderWidth(int x);
// 分别设置四周空白
void setPaddings(int l, int r, int t, int b);
// 设置水平、垂直空白
void setPaddings(int h, int v);
// 设置四周相同的空白
void setPaddings(int x);
// 设置图标边缘空白比例,0~0.5,越大越空
void setIconPaddingProper(double x);
// 设置鼠标交互时前景(文字/图标)会不会动
void setFixedForePos(bool f = true);
// 设置固定大小;并且会自动选取合适的最小值(adjustMinimumSize())
void setFixedForeSize(bool f = true, int paddings = 0);
// 设置为正方形(以高度为准)
void setSquareSize();
// 修改字体时是否显示动画
void setTextDynamicSize(bool d = true);
// 设置鼠标单击松开后是否当做移开
// 点击出现菜单的按钮必须设置
void setLeaveAfterClick(bool l = true);
// 启用双击,会响应双击事件,但是单击会有延迟
void setDoubleClicked(bool e = true);
// 动画时是否自动设置文字的颜色,针对派生类的设置,不一定有效
void setAutoTextColor(bool a = true);
// 临时屏蔽hover事件,需要手动关闭(set true->操作->set false)
// 比如出现动画,如果一开始鼠标在按钮上,按钮移开,但是hover效果还在,直到鼠标动
void setBlockHover(bool b = true);
// 鼠标进入按钮区域,前景图标从对面方向缩放出现
void setShowAni(bool enable = true);
// 前景从中心点出现的缩放动画
void showForeground();
// 前景从该点对面出现的动画
void showForeground2(QPoint point = QPoint(0, 0));
// 隐藏前景,使用 showForeground() 恢复
void hideForeground();
// 延迟的 showForeground2()
void delayShowed(int msecond, QPoint point = QPoint(0, 0));
// 调整最小大小,很常用
void adjustMinimumSize();
void setState(bool s = true);
bool getState();
// 模拟鼠标点击效果,与鼠标点击作用一样
// 会触发 clicked 信号
virtual void simulateStatePress(bool s = true, bool a = false);
// 该点是否在按钮的范围内
virtual bool inArea(QPoint point);
```
信号:
```C++
void showAniFinished();
void hideAniFinished();
void pressAppearAniFinished();
void pressDisappearAniFinished();
void jitterAniFinished();
// 点击事件
void clicked();
void doubleClicked();
void rightClicked();
// 焦点
void signalFocusIn();
void signalFocusOut();
// 其余鼠标事件
void signalMouseEnter();
// 进入后延迟信号(以渐变动画完成为准,相当于可手动设置)
void signalMouseEnterLater();
void signalMouseLeave();
// 离开后延迟的信号(直至渐变动画完成(要是划过一下子离开,这个也会变快))
void signalMouseLeaveLater();
void signalMousePress(QMouseEvent *event);
void signalMousePressLater(QMouseEvent *event);
void signalMouseRelease(QMouseEvent *event);
void signalMouseReleaseLater(QMouseEvent *event);
```
没有合适的资源?快使用搜索试试~ 我知道了~
基于QT+QML+C++的可交互的创意动态按钮QPushButton+源码
共44个文件
cpp:18个
h:17个
gif:2个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 2 浏览量
2024-04-29
19:35:14
上传
评论 1
收藏 732KB ZIP 举报
温馨提示
用法链接:https://menghui666.blog.csdn.net/article/details/138323059?spm=1001.2014.3001.5502 该项目实现了可交互的创意动态按钮,包含如下功能: 所有颜色自定义 鼠标悬浮渐变 两种点击效果:鼠标点击渐变 / 水波纹动画(可多层波纹叠加) 额外鼠标移入/移出/按下/弹起的实时/延迟共8种事件 鼠标悬浮图标位置主动变化 鼠标拖动图标抖动反弹效果 鼠标进入父控件时开启出现效果,或启动时出现 延迟出现的动画效果(多个按钮连续) 记录开关状态 直接设置 x、y 的圆角显示 边框颜色设置 禁用时半透明+点击穿透效果 添加额外的边缘角标 三种前景模式:图标、文字、带遮罩的图标(任意变色) 支持QSS直接设置部分属性 与父类 QPushButton 兼容 时间准确性:根据时间戳计算动画进度,即使在低性能机器上也可准时完成动画 稳定性:一按钮多功能,完美兼容多种情况下焦点事件 极其强大的可扩展性,继承该按钮后可任意修改显示效果和动画效果
资源推荐
资源详情
资源评论
收起资源包目录
可交互的创意动态按钮.zip (44个子文件)
Qt-InteractiveButtons-master
pictures
picture.gif 695KB
picture2.gif 65KB
mainwindow.h 809B
InteractiveButtons.pro 2KB
resources
icons
point_menu.png 490B
LICENSE 11KB
mainwindow.cpp 5KB
main.cpp 183B
mainwindow.ui 654B
interactive_buttons
threedimenbutton.cpp 6KB
pointmenubutton.h 415B
winsidebarbutton.cpp 2KB
waterzoombutton.cpp 2KB
winmaxbutton.cpp 880B
winclosebutton.h 450B
threedimenbutton.h 1KB
interactivebuttonbase.h 17KB
winmaxbutton.h 269B
generalbuttoninterface.h 1KB
generalbuttoninterface.cpp 1KB
waterfloatbutton.h 900B
winminbutton.cpp 912B
infobutton.h 359B
winrestorebutton.h 288B
winsidebarbutton.h 504B
winminbutton.h 277B
waterfallbuttongroup.h 1KB
winclosebutton.cpp 2KB
infobutton.cpp 4KB
watercirclebutton.cpp 3KB
winmenubutton.cpp 2KB
winmenubutton.h 298B
waterfallbuttongroup.cpp 5KB
waterzoombutton.h 712B
winrestorebutton.cpp 3KB
interactivebuttonbase.cpp 63KB
appendbutton.h 536B
pointmenubutton.cpp 3KB
waterfloatbutton.cpp 6KB
appendbutton.cpp 2KB
watercirclebutton.h 953B
resources.qrc 138B
.gitignore 392B
README.md 7KB
共 44 条
- 1
资源评论
梦回阑珊
- 粉丝: 3013
- 资源: 868
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功