2013-02-20 99 views
1

我放在這樣的背景圖片:Qt的窗口有透明的背景圖像

setWindowFlags(Qt::FramelessWindowHint); 

    QPixmap slika("some_image.png"); 
    QPalette paleta; 
    paleta.setBrush(this->backgroundRole(), QBrush(slika)); 
    this->setPalette(paleta); 

如果我讓這幅畫透明的,當應用程序加載,它只會閃爍和消失。但是如果我以不透明的方式製作這個圖像,那麼一切都是好的。爲什麼Qt拒絕使用透明圖像?

回答

1

我不知道你的用例是什麼,但你也可以嘗試使用setStyleSheet方法來使背景透明。

setStyleSheet("background:transparent;"); 
setAttribute(Qt::WA_TranslucentBackground); 
setWindowFlags(Qt::FramelessWindowHint); 

希望這會有所幫助。

+0

感謝您的回答。我已經嘗試過,但是如果我的圖像具有透明度,那麼我的對話框就會閃爍並消失(對話框仍然打開並激活,只有它隱藏起來,不知道爲什麼)。如果我放置不透明的實體圖像,那麼它就可以工作。 – Alen 2013-02-21 13:59:56

+0

@Alen我沒有在這臺機器上安裝Qt env,所以我不能確定,但​​我認爲這將是默認行爲,因爲該窗口是開放的,但你不能看到它,因爲它的背景是透明的,沒有窗框。 – 2013-02-21 15:43:59

+0

背景不完全透明,它50%透明。當對話框初始化時,我可以看到背景圖像一秒鐘,然後消失。 – Alen 2013-02-21 15:49:52