2013-02-20 97 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