在使用 Qt 編寫 GUI 程序時,我們經常需要使用 CSS 來美化窗口樣式。而有時我們想要實現窗口透明背景效果,這時該怎樣操作呢?
首先,我們需要創建一個透明背景的 QSS 樣式,其 CSS 代碼如下:
QWidget{ background:transparent; }
然后將上述代碼寫入一個樣式表文件中,并在主程序中加載該樣式表:
QFile file("qss.qss"); file.open(QFile::ReadOnly); QString styleSheet = QLatin1String(file.readAll()); qApp->setStyleSheet(styleSheet); file.close();
以上代碼將從當前目錄下讀取名為 “qss.qss” 的樣式表文件,并將其應用到程序中。
接下來我們需要通過設置窗口 flag 來使其支持透明背景,同時使用 setAttribute() 函數來啟用透明度:
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint); setAttribute(Qt::WA_TranslucentBackground, true);
其中,setWindowFlags() 用于設置窗口標志位,這里我們使用了Qt::FramelessWindowHint 表示去掉窗口標題欄,Qt::WindowSystemMenuHint 和 Qt::WindowMinMaxButtonsHint 表示啟用窗口右上角的最小化和最大化按鈕。
最后,在 .pro 文件中添加以下代碼以啟用透明度支持:
CONFIG += qt debug dontrun QT += core gui widgets LIBS += -luser32 win32:LIBS += -lgdi32 QMAKE_LFLAGS += /NODEFAULTLIB:LIBCMT
以上就是使用 Qt 實現窗口透明背景效果的全部步驟。為了更好的展示視覺效果,我們可以將窗口的背景圖設置為一個透明 PNG 圖片,即可實現晶瑩剔透的效果。