1、設置透明和半透明窗口
一、設置setAttribute(Qt::WA_TranslucentBackground, true)屬性;
二、在PaintEvent中實現:
void paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
painter.fillRect(this->rect(), QColor(0, 0, 255, 80));
//QColor最後一個參數80表明背景的透明度,若是爲0就是全透明
}
或者加上一個帶有透明色彩的PNG圖片:
Widget()
{
ui->setupUi(this);
bgPixmap.load(":/res/icon/icon/transform.png"); //加載背景圖片
}
void Widget::paintEvent(QPaintEvent *event)
{
Q_UNUSED(event);
QPainter painter(this);
painter.fillRect(this->rect(), QColor(0, 0, 255, 1));
painter.drawPixmap(rect(), bgPixmap); //這裏背景PNG的alpha數值就是窗口的透明度
}ui
2、異形窗口的實現
異形窗口和透明同樣,不一樣的是異形窗口須要將透明的地方設置爲alpha=0,即100%透明。須要注意的是,當設置了透明度100%以後,窗口自動變爲異形窗口,可是100%透明的地方是沒法捕獲鼠標和鍵盤操做的,你想要在一個透明的區域點擊鼠標會直接穿透到下一層的應用程序,這也是異形窗口的特別之處。若是你象這樣,必定要捕獲鼠標,且看起來透明度100%,能夠設置alpha=1,這樣就行了。this