-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathtoast.h
81 lines (68 loc) · 1.91 KB
/
toast.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/**
* Toast Widget
* @brief 自动消失提示框
* @anchor Ho229
* @date 2020/12/12
*/
#ifndef TOAST_H
#define TOAST_H
#include <QLabel>
class QTimer;
class QHBoxLayout;
class QPropertyAnimation;
class QSequentialAnimationGroup;
#define DEFULT_TOAST_STYLE "\
QLabel\
{\
color:#FFFFFF;\
font:15px;\
font-weight:500;\
background-color:rgba(0,0,0,150);\
padding:3px;\
border-radius:9;\
}"
class Toast Q_DECL_FINAL : public QWidget
{
Q_OBJECT
public:
/**
* @brief Toast
* @param parent 父对象
* @param horizontalMargin 水平方向的边界
* @param verticalMargin 竖直方向上的边界
* @param maxmaximumWidth 最大宽度
* @param wordWrap 启用自动换行
* @param waitMsece 等待时间
* @param style 提示框样式表:注意字体大小和宽高效果要配合好
*/
explicit Toast(QWidget *parent = nullptr, int horizontalMargin = 12, int verticalMargin = 12,
int maxmaximumWidth = 1400, bool wordWrap = false, int waitMsecs = 1200,
const QString &style = DEFULT_TOAST_STYLE);
~Toast() Q_DECL_OVERRIDE;
/**
* @brief 设置提示文字
* @param text 提示文字
*/
void setText(const QString& text);
/**
* @brief 弹出提示
* @warning 此函数不会重新调整弹出位置
*/
void toast();
/**
* @brief 弹出提示
* @param text 提示文字
*/
void toast(const QString& text)
{
this->setText(text);
this->toast();
}
private:
QLabel *m_messageLabel = nullptr;
QHBoxLayout *m_layout = nullptr;
QSequentialAnimationGroup *m_animation = nullptr;
QPropertyAnimation *m_posAnimation = nullptr; // 弹出动画
QPropertyAnimation *m_opacityAnimation = nullptr; // 消失动画
};
#endif // TOAST_H