标签:sheet 文档 调整 运行 border mac os 渲染 半透明 pos
1. QT样式表设置背景色 background-color无效的原因
QPushButton
{
background-color: red;
}
结果发现,按钮的背景色并没有被设置为红色!
问题的原因,QT的帮助文档里讲了,比较难找,打开帮助文档,依次展开->style sheet->Qt Style Sheets Reference,找到表格中的QPushButton,如下图所示
大体意思就是,要想使背景色生效,必须要设置一下某个border属性,border-color、border-width等等任何一个跟border相关的属性都行。因为pushbutton的原生边界把背景色给覆盖住了。
2. Qt窗体设置Qt::WA_TranslucentBackground为全黑的原因
背景漆黑的部分其实就是透明的部分...大多是因为桌面没有设置成32色导致的
你的桌面是32色的么?
还有你安装了显卡驱动了么?
背景漆黑的部分其实就是透明的部分...
如果要想要半透明效果应该用setWindowOpacity,WA_TranslucentBackground是背景透明控件不透明的效果。
------解决方案--------------------
setWindowOpacity(0.5);
------解决方案--------------------
一般要把窗体设置为FramelessWindowHint属性,WA_TranslucentBackground才能生效。如果要想要半透明效果应该用setWindowOpacity,WA_TranslucentBackground是背景透明控件不透明的效果。
在Qt中,设置窗体透明度的函数有:void setWindowOpacity(qreal level)
特性:
透明度的有效范围从1.0(完全不透明)到0.0(完全透明的)。
默认情况下,此属性的值是1.0。(也就是不透明状态)
这个特性可以在嵌入式Linux、Mac OS X、Windows、和X11平台上使用。
此功能不可用在Windows CE。
还要注意,半透明的windows更新和调整明显慢于不透明的窗口。(透明窗体的刷新速度会变慢)
Qt参考文档
Platform notes:
X11: This feature relies on the use of an X server that supports ARGB visuals and a compositing window manager.
Windows: The widget needs to have the Qt::FramelessWindowHintwindow flag set for the translucency to work.
平台注意事项:
X11(linux):此特性依赖于能提供支持ARGB视觉效果和复合式视窗管理的X服务的功能开启。
Windows:此控件需要设置窗口标志Qt::FramelessWindowHint才能开启透明功能。
在windows上设置widget属性
setWindowFlags(Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground,true);
可以实现透明功能,但是在linux上需要安装渲染工具compiz 方法如下:
root用户下: yum install compiz
运行:compiz --replace &
标签:sheet 文档 调整 运行 border mac os 渲染 半透明 pos
原文地址:https://www.cnblogs.com/xiang--liu/p/12981262.html