2015-05-09 33 views
0

我有3個主要部件的子部件,旨在播放視頻文件(它們的大小和位置相同,我的意思是它們彼此重疊,並且每次一個其中顯示了其他人隱藏)Qt透明標籤並不總是更新其背景

我也有一個Qlabel透明背景,我也創建了一個主窗口小部件。我提出這個標籤是爲了一直顯示超過3個視頻播放器小部件。 Qlabel的代碼部分低於:

labelCamName = new QLabel(this); 
labelCamName->resize(300,50); 
labelCamName->move(110,0); 

labelCamName->setStyleSheet("background-color: rgba(0,0,0,0%);color: rgba(150, 30, 30, 90%)"); 

labelCamName->setText("blabla"); 
labelCamName->raise(); 
labelCamName->show(); 

它正常工作時,該標籤已經被疊加更新本身(播放視頻),但第一視頻播放器插件,當涉及到改變控件播放視頻和顯示另一要播放的小部件(不播放)它顯示靜止的黑色框架,標籤的背景顯示第一個視頻播放器小部件的最後一幀。它不假裝它是透明的研究背景標籤,如下圖所示的畫面:

first video Widget

second video player widget

爲什麼林面對這個問題,以及如何使標籤工作總是透明的任何建議?

在此先感謝。非常感激。

+0

您正在使用哪個Qt版本?根據這些按鈕背後UI的類型和複雜性,這個UI可能更容易在QtQuick中實現,並具有更好的性能(使用OpenGL合成視頻和疊加層)。 –

+0

@FrankOsterfeld我正在使用QT4,但這個問題是否真的與版本有關?我認爲我做錯了什麼或忘記添加一些屬性。 – Horizon1710

+0

@Frank Osterfeld,但不過,這個問題很有趣。在圖片2中,按鈕清晰地顯示了圖片1中的背景。通過將標籤背景上的底層小部件圖案化,透明度是僞造的。看起來標籤沒有注意到底層的小部件發生了變化。我想知道這是否會改變,當第二個視頻播放。 – Greenflow

回答

1

將這些屬性和標誌添加到所需的Qlabel解決了我的問題。

labelCamName->setWindowFlags(Qt::Window | Qt::FramelessWindowHint); 
labelCamName->setAttribute(Qt::WA_TranslucentBackground);