当前位置: 首页 > news >正文

《QT实用小工具·六十四》QT实现仿Windows消息通知控件可交互

1、概述
源码放在文章末尾

该项目实现了仿Windows消息通知功能,包含多个通知显示+定时消失+支持出现/消失动画等功能
允许两种使用方式:
局部通知,通过信号槽和 Lambda 直接获取通知的操作方式
全部通知,触发信号给其他控件使用
另外支持卡片本身、附加三个按钮的点击事件。

项目demo演示如下所示:
在这里插入图片描述

项目部分解析如下:
部署
开发环境:Qt13.1(理论上相近版本亦可)

用法
头文件
需要在工程pro文件中包含头文件

#include "tipbox.h"
//初始化
tip_box = new TipBox(this);
connect(tip_box, &TipBox::signalCardClicked, [=](NotificationEntry* n){
    qDebug() << n->toString();
});
connect(tip_box, &TipBox::signalBtnClicked, [=](NotificationEntry* n){
    qDebug() << n->toString();
});

添加通知
在窗口右下角添加一个通知卡片,5秒钟后定时消失

NotificationEntry* noti = new NotificationEntry("key", "title", "content1");
noti->setBtn(1, "btn1", "cmd1"); // 全局信号可接收
noti->setBtn(2, "btn2", "cmd2");
tip_box->createTipCard(noti);

connect(noti, &NotificationEntry::signalCardClicked, [=]{
    qDebug() << "通知被点击";
});
connect(noti, &NotificationEntry::signalBtnClicked, [=](int x){
    qDebug() << "按钮被点击" << x;
});

自动调整大小
在修改窗口大小的时候,固定通知Box在右下角

void MainWindow::resizeEvent(QResizeEvent*)
{
    tip_box->adjustPosition();
}

源码下载

http://www.dtcms.com/a/10095.html

相关文章:

  • CentOS7安装Redis
  • C语言游戏实战(12):植物大战僵尸(坤版)
  • 深度学习中特征(tensor)维度转换
  • 数据链路层简单介绍
  • 阿里云数据库 SelectDB 版全面商业化,开启现代化实时数据仓库的全新篇章
  • 向郭老师学习研发项目管理
  • 赶紧收藏!2024 年最常见 20道 Redis面试题(三)
  • 文件搜索相关命令
  • 5.23小结
  • 老题重测,国产AI大模型从“智障”走向“智能”?
  • JS对象超细
  • 基于springboot+vue的学生考勤管理系统
  • LP-MSPM03507学习资料汇总
  • 2024年5月23号PMP每日三题含答案
  • 关于如何创建一个可配置的 SpringBoot Web 项目的全局异常处理
  • 创建vue工程、Vue项目的目录结构、Vue项目-启动、API风格
  • QComboBox
  • 专题汇编 | ChatGPT引领AIGC新浪潮(一)
  • React Query
  • Codeforces Round 821 (Div. 2) C. Parity Shuffle Sorting (构造之全变成一样的)
  • Python 全栈体系【四阶】(五十二)
  • 15:00面试,15:08就出来了,问的问题有点变态。。。
  • C#--SVG矢量图画法示例
  • 绿色智能:AI机器学习在环境保护中的深度应用与实践案例
  • 5g和2.4g频段有什么区别
  • Proteus与Multisim哪款更适合51单片机仿真?
  • 数据结构:内核kfifo的实践
  • 【WSN覆盖优化】基于灰狼优化算法的无线传感器网络覆盖 GWO-WSN覆盖优化【Matlab代码#74】
  • MySQL 用来查询表结构的 SQL 语句
  • AOP 切面判断 token 是否有效