- 一、透明窗体
- 1.1 方法1
- 1.2 方法2
- 二、无边框窗体
实现窗体内容部件的透明效果只需设置其背景色的rgba即可,代码如下:
QPushButton{background-color:rgba(255,255,255,100)}
其中,rgba中的a就是指alpha,它的取值是0~255,取值为0表示完全透明,取值为255表示完全不透明。这里a设置为100表示半透明效果。
部件的透明效果可以通过上述方式来设置,但是窗体无法通过上述方式设置,但是可以通过两种方法设置。
1.1 方法1代码如下:
//设置窗体的不透明度为0.5
setWindowOpacity(0.5);
使用setWindowOpacity函数可以实现窗口的透明效果,它的参数u取值范围为0.0~1.0,0.0表示完全透明,1.0表示完全不透明,程序运行效果如下: 可以发现整个应用程序界面都是半透明的。
如果不想让部件透明可以使用第二种方法。
1.2 方法2将方法1的代码注释,添加如下两行代码:
setWindowFlags(Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground);
这里使用了setAttribute()函数指定窗口的Qt:: WA_TranslucentBackground属性,它可以使窗体背景透明,而其中的部件不受影响。不过在Windows下还要使用setWindowFlags()函数指定Qt::FramelessWindowHint标志,这样才能实现透明效果。运行程序如下: 可以发现,窗口没有了标题栏,这时要想关闭窗口,就要使用Qt Creator应用程序输出栏上的红色按钮来强行关闭程序。这样实现的效果背景完全透明的,要是还想实现半透明效果,可以使用重绘事件。
1.首先在头文件中声明paintEvent()函数:
protected:
void paintEvent(QPaintEvent *);
2.然后在主程序中添加paintEvent()函数的定义:
#include
void MainWindow::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.fillRect(rect(),QColor(255,255,255,200));
}
这里先使用rect()函数获取窗口内部的矩形,它不包含任何边框,然后使用半透明的白色对这个矩形进行填充,可以运行程序查看其效果: fillRect()函数可以指定任何一个区域,所以可以实现窗体的部分区域全部透明,部分区域半透明或不透明。 但是,它没有标题栏和边框,还需要手动为其添加。
自定义无边框窗口时,需要将窗口标志设为:
Qt::FramelessWindowHint |Qt::WindowSystemMenuHint | Qt::WindowMinMaxButtonsHint
ok,以上便是本文的全部内容了,如果对你有所帮助,记得点个赞哟~