天天看点

QT应用编程: 半透明遮罩窗口实现

一、环境介绍

操作系统介绍:win10 64位

QT版本: 5.12.6

二、需求介绍

我们在显示一些模态对话框的时候,往往需要将对话框的背景颜色调暗以达到突出当前对话框的效果。

例如:对话框的父窗口除了标题栏以外的部分都变暗了,在父窗口的对比下对话框的显示效果就得到了强调。

这种设计多见于web页面,当用户点击诸如购买之类的按钮后页面会弹出一个购物清单确认对话框,并将对话框以外的内容用类似图中的效果处理,使用户可以将注意力集中在对话框本身。

QT应用编程: 半透明遮罩窗口实现
QT应用编程: 半透明遮罩窗口实现
三、实现代码

/*
日期: 2021-01-02
作者: DS小龙哥
环境: win10 QT5.12.6 MinGW32
功能: 打开遮罩窗体
*/
void Widget::on_pushButton_clicked()
{
    QWidget mask_window(this);
    //设置窗体的背景色,这里的百分比就是透明度
    mask_window.setStyleSheet(QString("background-color: rgba(0, 0, 0, 20%);"));
    mask_window.setGeometry(this->rect()); //获取父窗体的几何形状设置当前窗口
    mask_window.show();
    //对话框
    QMessageBox::information(this,"提示","遮罩框已打开",QMessageBox::Ok,QMessageBox::Ok);
    //关闭窗口
    mask_window.close();
}      

继续阅读