QT透明和半透明窗口實現,QT異形窗口實現

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

相關文章
相關標籤/搜索