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,若实际的遮罩是窗口部件,
    // 则需要计算出,窗口部件在屏幕中的实际的位置

 

你可能感兴趣的:(QT,小tips,QT,遮罩)