1、支持淡入淡出
2、支持阻塞和非阻塞
3、宽高自适应
效果示例:
MMessageToast.h
//********************************************************
/// @brief 消息提示框
/// @author y974183789@gmail.com
/// @date 2021/8/31
/// @note
/// @version 1.0.0
//********************************************************
#pragma once
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class QTimer;
class QEventLoop;
class QPropertyAnimation;
QT_END_NAMESPACE
namespace Ui {
class MMessageToast;
}
class MMessageToast : public QWidget {
Q_OBJECT
public:
explicit MMessageToast(QWidget *pParent = Q_NULLPTR);
~MMessageToast();
//设置显示持续时间
void setShowDuration(int nMSecs);
//获取显示持续时间
int getShowDuration() const;
//信息消息框
static void information(QWidget *pParent, const QString &strText, bool bShowModal = false, int nShowDuration = 2000);
//警告消息框
static void warning(QWidget *pParent, const QString &strText, bool bShowModal = false, int nShowDuration = 2000);
// 错误消息框
static void error(QWidget *pParent, const QString &strText, bool bShowModal = false, int nShowDuration = 2000);
//成功消息框
static void success(QWidget *pParent, const QString &strText, bool bShowModal = false, int nShowDuration = 2000);
private:
//初始化窗口
void initWidget();
//调整位置
void adjustPosition(QWidget *pParent);
//显示消息提示框
void showMessageToast(const QString &strIcon, const QString &strText, const QString strStyleValue,
bool bShowModal, int nShowDuration = 2000);
//获取消息提示框
static MMessageToast *getMessageToast(QWidget *pParent);
void exec();
void setVisible(bool visible) Q_DECL_OVERRIDE;
private Q_SLOTS:
//开始淡入动画
void startFadeInAnimation();
//开始淡出动画
void startFadeOutAnimation();
private:
Ui::MMessageToast *ui;
int m_nShowDuration; //显示持续时间
QTimer *m_pShowTimer; //显示定时器
QPropertyAnimation *m_pShowAnimation; //显示动画
QEventLoop* m_pLoop;
};
MMessageToast.cpp
//*******