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