unix qt 与 windows qt的用法差异

2021-03-03 15:27

阅读:520

标签: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在linux下设置widget透明的方法

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 &

 

unix qt 与 windows qt的用法差异

标签:sheet   文档   调整   运行   border   mac os   渲染   半透明   pos   

原文地址:https://www.cnblogs.com/xiang--liu/p/12981262.html


评论


亲,登录后才可以留言!