README.md 2.5 KB
Newer Older
仿真超人's avatar
仿真超人 已提交
1 2
# qt-notify2

C
chenjun 已提交
3 4 5 6 7 8 9 10 11 12
### 介绍
qt-notify功能增强、全新实现版本,原版 https://gitee.com/cassfrontend/qt-notify

![](./screenshot.gif)

### 较原版增强功能

1.  超出最大显示数时,将显示闪烁消息图标和队列中的数量
2.  消息主体不限于单行,改为多行显示,仍支持自动截短加省略号
3.  点击消息不限于按URL链接处理,可自行通过信号连接显示详细信息界面
C
chenjun 已提交
13 14 15 16 17
4.  支持多主题样式管理,不同的情景使用不同样式
5.  支持各条消息单独定义显示时间
6.  消息提示框加阴影效果
7.  提示框右键关闭
8.  改进的示例代码
C
chenjun 已提交
18 19 20 21

### 接口改进

1.  更精简的主体代码
C
chenjun 已提交
22
2.  所有可配置项都改为函数接口,包括显示时间、动画时间、窗口大小、位置间隔、默认图标、主题样式、是否显示超出消息数
C
chenjun 已提交
23 24
3.  提示消息不限于标题、主体、图标、链接4项数据,使用自定义data(QVariantMap)扩展
4.  图标、链接可省略,可使用默认图标,也可在data中传入icon、url等
C
chenjun 已提交
25 26
5.  通过data接口可以自定义单条消息使用的主题样式、显示时间
6.  点击提示,通过信号notifyDetial传出,连接后可自行处理
C
chenjun 已提交
27 28 29 30 31 32 33 34 35 36 37 38 39

### 使用说明

```c++
NotifyManager *manager = new NotifyManager(this);
manager->setMaxCount(3); // 默认5
manager->setDisplayTime(5000); // 默认10000
manager->setAnimateTime(500); // 默认300
manager->setSpacing(5); // 默认10
manager->setCornerMargins(20, 20); // 默认10, 10
manager->setNotifyWndSize(300, 75); // 默认300, 60
manager->setDefaultIcon(":/message.png"); // 默认":/message.png"
manager->setShowQueueCount(true); // 默认true
C
chenjun 已提交
40
manager->setStyleSheet("#notify-background {....", "主题名称"); // 默认样式为白色,主题名default
C
chenjun 已提交
41 42 43 44 45 46 47 48 49 50 51

// 基本用法
manager->notify("消息标题", "消息主体");

// 扩展用法
QVariantMap data;
data["icon"] = ":/messageXXX.png";
//data["icon"] = QPixmap(xxx);
data["name"] = "张三";
data["location"] = "XX市XX路";
data["money"] = 30.59;
C
chenjun 已提交
52 53 54
data["theme"] = "black"; // 自定义主题样式,除默认样式,其它需预先添加
// data["styleSheet"] = "#notify-background {...."
data["displayTime"] = 30*1000; // 显示时间毫秒
C
chenjun 已提交
55 56 57
manager->notify("支付信息", "XXX商家XXX商品", data);

// 点击消息处理
C
chenjun 已提交
58
QObject::connect(manager, &NotifyManager::notifyDetial, this, [this](const QVariantMap &data){
C
chenjun 已提交
59 60 61
    QMessageBox::information(this, data.value("title").toString(), data.value("body").toString());
});
```