代码拉取完成,页面将自动刷新
同步操作将从 屁股大象/message 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#ifndef MESSAGE_H
#define MESSAGE_H
#include <QWidget>
#include <QLabel>
#include <QTimer>
#include <QPropertyAnimation>
#include <mutex>
enum MessageType {
MESSAGE_TYPE_SUCCESS = 0x20,
MESSAGE_TYPE_ERROR,
MESSAGE_TYPE_WARNING,
MESSAGE_TYPE_INFORMATION
};
class MessageItem;
class Message : public QObject
{
Q_OBJECT
public:
explicit Message(QObject *parent = nullptr);
~Message() override;
/**
* @brief Push 推入消息
* @param type 消息类型
* @param content 消息内容
*/
void Push(MessageType type, QString content);
/**
* @brief SetDuration 设置消息显示的时间
* @param nDuration 显示时间,必须大于等于0,若等于0则不消失
*/
void SetDuration(int nDuration);
private:
std::vector<MessageItem*> m_vecMessage;
std::mutex m_qMtx;
int m_nWidth;
int m_nDuration;
private slots:
void adjustItemPos(MessageItem* pItem);
void removeItem(MessageItem* pItem);
};
class MessageItem : public QWidget
{
Q_OBJECT
public:
explicit MessageItem(QWidget* parent = nullptr,
MessageType type = MessageType::MESSAGE_TYPE_INFORMATION,
QString content = "");
~MessageItem() override;
void Show();
void Close();
void SetDuration(int nDuration);
protected:
void paintEvent(QPaintEvent *event) override;
private:
void AppearAnimation();
void DisappearAnimation();
private:
const int nIconMargin = 12;
const int nLeftMargin = 64;
const int nTopMargin = 10;
const int nMinWidth = 400;
const int nMinHeight = 70;
QLabel* m_pLabelIcon;
QLabel* m_pLabelContent;
QTimer m_lifeTimer;
int m_nWidth;
int m_nHeight;
int m_nDuration;
signals:
void itemReadyRemoved(MessageItem* pItem);
void itemRemoved(MessageItem* pItem);
};
#endif // MESSAGE_H
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。