zoukankan      html  css  js  c++  java
  • [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
  • 相关阅读:
    洛谷 P3613 【深基15.例2】寄包柜
    洛谷 P1478 陶陶摘苹果(升级版)
    P1090 [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G
    c++优先队列(priority_queue)用法详解
    洛谷 P3817 小A的糖果
    洛谷 P1208 [USACO1.3]混合牛奶 Mixing Milk
    洛谷 P1449 后缀表达式
    洛谷 P1106 删数问题
    在Linux中使用tomcat部署项目
    jar在linux上运行脚本 #start #stop #restart
  • 原文地址:https://www.cnblogs.com/mdgsf/p/4841291.html
Copyright © 2011-2022 走看看