非阻塞式消息提示框 MMessageToast

MMessageToast是一个Qt框架下的自定义组件,用于显示信息、警告、错误和成功消息。它支持淡入淡出效果,可设置显示持续时间和是否阻塞。组件能自适应宽高,并能根据屏幕位置进行智能布局。此外,还提供了信息、警告、错误和成功四种不同类型的样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

//*******
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值