天天看點

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();
}      

繼續閱讀