Qt窗體透明(主窗體與子窗體)

Qt窗體透明(主窗體與子窗體)

2018年12月05日 21:47:22 風斜夜 閱讀數 297

一、主窗體與子窗體全透明

    setWindowOpacity(0.5);

setWindowOpacity(0.5);

    取值範圍爲:0.0 - 1.0,默認值爲1.0,全透明爲0.0,不透明則爲1.0。

 

二、主窗體透明(子窗體不透明)

主窗體採用背景色。

在Qt5.6下:發現要把主窗體設置爲無邊框纔可以生效,否則沒有透明效果。


 
Qt::WindowFlags flags = this->windowFlags();
 
flags |= (Qt::FramelessWindowHint);
 
this->setWindowFlags(flags);
 
setAttribute(Qt::WA_TranslucentBackground, true);
 
 
 
void paintEvent(QPaintEvent *event)
 
{
 
    QPainter painter(this);
 
    //QColor最後一個參數100代表背景的透明度(0~255),越小越透明
    painter.fillRect(this->rect(), QColor(0, 0, 255, 100));      
 
}

注意:setStyleSheet("background:red;"); qss這種設置背景方式會遮擋透明效果

三、子窗體設置透明

直接設置子窗體透明度無法實現透明效果,方法是其當做圖形元素,對該圖形元素進行設置透明度效果,


 
 QGraphicsOpacityEffect *opacityEffect=new QGraphicsOpacityEffect;


    ui->LabelAnswerCount->setGraphicsEffect(opacityEffect);


    opacityEffect->setOpacity(0.7);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章