Qt如何写一个三秒自动消失提示窗,适用于窗体和tableView中

#include <QDateTime>
#include "QTimer"
#include "QAbstractItemModel"
class QVBoxLayout;
class GlodonTableView;
class QModelIndex;
class QLabel;
class QPropertyAnimation;

class  ToolTipParam
{
public:
    ToolTipParam() :
        m_sizeMinTip(80, 60),
        m_sizeMaxTip(0, 0),
        m_sizeArrow(19, 9),
        m_nRowHeight(20),
        m_nTimeFadeOut(1000),
        m_nTimeRemain(3000),
        m_fontText(QFont("Microsoft YaHei", 12, QFont::Normal)),
        m_colorText(Qt::black),
        m_sizeIcon(16, 16),
        m_pParentWidget(NULL),
        m_strIconPath("xxx.png"),
        m_strText(QString(""))
    {

    }

    ToolTipParam & operator = (const ToolTipParam & param)
    {
        m_strIconPath = param.m_strIconPath;
        m_nRowHeight = param.m_nRowHeight;
        m_strText = param.m_strText;
        m_fontText = param.m_fontText;
        m_colorText = param.m_colorText;
        m_nTimeRemain = param.m_nTimeRemain;
        m_nTimeFadeOut = param.m_nTimeFadeOut;
        m_sizeArrow = param.m_sizeArrow;
        m_sizeMinTip = param.m_sizeMinTip;
        m_sizeMaxTip = param.m_sizeMaxTip;
        m_sizeIcon = param.m_sizeIcon;
        m_pParentWidget = param.m_pParentWidget;
        return *this;
    }

    QString   m_strIconPath;             // 图标路径
    QSize     m_sizeIcon;                // 图标尺寸
    QString   m_strText;                 // 文字
    QFont     m_fontText;                // 字体
    QColor    m_colorText;               //文字颜色
    int       m_nRowHeight;              // 文字行高
    int       m_nTimeRemain;             // 停留时间(毫秒)
    int       m_nTimeFadeOut;            // 淡出时间(毫秒)
    QSize     m_sizeArrow;               // layout的外边距
    QSize     m_sizeMinTip;              // tip控件的大小
    QSize     m_sizeMaxTip;              // tip的换行大小
    QWidget   *m_pParentWidget;          // 被指向的widget(父窗体)
};


class  ToolTipWidget : public QWidget
{
    Q_OBJECT

public:
    static void showToolTip(QWidget * pParent, const QString &strShowText);  //使用时直接调用这个接口就可以
    static void tableViewShowToolTip(QWidget *pTableView, const QModelIndex& oIndex, const QString& strShowText, bool bIsTableView = false);  //tableView可以直接调用该静态方法
    static void closeTip(QWidget * pParent = nullptr);     //关闭提示
    virtual void ImmediateCloseTip();        // 立即关闭,并销毁    
    virtual QPoint calcPosOfpParentWidget();        //
    bool isStartFadeOut();                 // 判断是否开始渐变退出
    void tipShowLocal();               //tip出现的位置,父窗体的上方
    void startTimer(void);   //
    void initUI();
    void initConnect();
    QPainterPath buildRoundRectTip();   //画圆角提示框
    void stopTime();
    ~ToolTipWidget();
protected:
    virtual void showEvent(QShowEvent * pEvent);
    virtual void paintEvent(QPaintEvent * pEvent);
    virtual void mouseReleaseEvent(QMouseEvent *pEvent);
    virtual bool eventFilter(QObject *pObj, QEvent *pEvent);
    virtual void enterEvent(QEvent *pEvent);
    virtual void leaveEvent(QEvent *pEvent);

private:
    explicit ToolTipWidget(ToolTipParam & oTipParam, QWidget *pParent = nullptr, const QModelIndex oIndex = QModelIndex(), bool bIsShowTotalQty = false);

    protected slots:
    void slotCloseTimer();
    void slotFadeout();
    void slotMoveTimer();

private:
    static ToolTipParam m_TipParam;
    QLabel             *m_pLabelIco;                      // 图标
    QLabel             *m_pLabelText;                     // 内容文字区
    QVBoxLayout        *m_pLayoutLeft;                        
    QVBoxLayout        *m_pLayoutRight;
    QTimer             *m_pTimerClose;                   // 关闭定时器
    QTimer             *m_pTimerMovePos;                 // 移动定时器

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值