• [Qt] Mask 蒙版


    [Qt] Mask 蒙版

    Mask能够覆盖在其他的widget上面,实现一些动态图片的加载效果。下面给出代码。

    mask.h

    #ifndef MASK_HJ
    #define MASK_HJ
    
    #include <QWidget>
    #include <QStyleOption>
    #include <QPainter>
    #include <QLabel>
    
    class CMask : public QWidget
    {
        Q_OBJECT
    public:
        CMask(QWidget *parent = 0);
        void m_vSetMessage(QString);
        void m_vSetPic(QString strPath);
        void m_vSetGif(QString strPath);
    
    private:
        QLabel *m_infoLabel;
        void paintEvent(QPaintEvent*);
    };
    
    #endif // MASK_HJ
    
    

    mask.cpp

    #include <QMovie>
    #include <QHBoxLayout>
    
    CMask::CMask(QWidget *parent) :
        QWidget(parent)
    {
    	this->setStyleSheet("background-color: rgba(0, 0, 0, 0);");
    
    	m_infoLabel =new QLabel(this);
    	m_infoLabel->setFont(QFont("黑体", 30));
    	m_infoLabel->setStyleSheet("background-color : rgba(0, 0, 0, 0);"
    		"color: #776e65;"
    		"margin: 0 auto");
    	m_infoLabel->setAlignment(Qt::AlignCenter);
    
    	QHBoxLayout *mainLayout = new QHBoxLayout();
    	mainLayout->setContentsMargins(0, 0, 0, 0);
    	mainLayout->addWidget(m_infoLabel);
    	this->setLayout(mainLayout);
    
        this->hide();
    }
    
    void CMask::m_vSetMessage(QString s)
    {
        m_infoLabel->setText(s);
        this->show();
    }
    
    void CMask::m_vSetPic(QString strPath)
    {
        m_infoLabel->setPixmap(QPixmap(strPath));
        this->show();
    }
    void CMask::m_vSetGif(QString strPath)
    {
        QMovie *movie = new QMovie(strPath);
        m_infoLabel->setMovie(movie);
        movie->start();
        this->show();
    }
    
    void CMask::paintEvent(QPaintEvent *){
        QStyleOption opt;
        opt.init(this);
        QPainter p(this);
        style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
    }
    

    调用方式

    CMask *m_poMask = new CMask(this);
    m_poMask->setGeometry(0, 0, 900, 480);
    m_poMask->m_vSetGif(":/image/loading.gif");
    m_poMask->show();
    
    My Github Blog: mdgsf.github.io
  • 相关阅读:
    GroupCoordinator机制
    Consumer 机制
    Producer机制
    Kafka总体介绍
    为什么使用kafka
    消息队列中点对点与发布订阅区别
    为什么使用消息系统
    人生的诗·290~294节
    唐诗宋词学习·141~145节
    人生的诗·295~299节
  • 原文地址:https://www.cnblogs.com/mdgsf/p/4841291.html
Copyright © 2020-2023  润新知