QT渲染窗口添加遮罩

    // 创建遮罩
    m_cellMasks[0] = new QWidget;
    m_cellMasks[0]->setWindowFlags(Qt::FramelessWindowHint | windowFlags()); // 隐藏标题
    m_cellMasks[0]->setWindowOpacity(0.4);   //关键-设置窗口透明度 1不透明 0透明
    m_cellMasks[0]->setVisible(false);    // 默认隐藏
    m_cellMasks[0]->setStyleSheet("background-color: #1F1F1F"); // 遮罩背景颜色
    m_cellMasks[0]->installEventFilter(this); // 注册过滤器
    
    
    // 显示遮罩--这里需要注意,我们的遮罩不能直接使用界面的rect,需要计算出实际的位置
    QRect rect = QRect(this->normalGeometry().x(), this->normalGeometry().y(), this->normalGeometry()->width(), this->normalGeometry()->height());
    m_cellMasks[0]->setParent(this, Qt::FramelessWindowHint | Qt::Window); 
    m_cellMasks[0]->setGeometry(rect);
    m_cellMasks[0]->show();
    
    // 注意,现在的遮罩是单独弹出窗口的rect,若实际的遮罩是窗口部件,
    // 则需要计算出,窗口部件在屏幕中的实际的位置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值