一、窗口透明
示例:
//窗口透明,取值0~1,0表示完全透明,1表示完全不透明
setWindowOpacity(0.5);
样例:
1.窗口透明,部件不透明
//窗体透明部件不透明windows需配合无边框风格实现
setWindowFlags(Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground);
二、部件透明
代码如下(示例):
//需添加头文件 #include <QGraphicsOpacityEffect>
QGraphicsOpacityEffect *opacityEffect = new QGraphicsOpacityEffect;
//设置透明度
opacityEffect->setOpacity(0.1);
ui->label->setGraphicsEffect(opacityEffect);
1.部件设置阴影
代码如下(示例):
//需添加头文件#include <QGraphicsDropShadowEffect >
QGraphicsDropShadowEffect *shadowEffect = new QGraphicsDropShadowEffect;
//阴影色,透明度
shadowEffect->setColor(QColor(100,100,100));
//阴影模糊半径
shadowEffect->setBlurRadius(20);
//阴影偏移值
shadowEffect->setXOffset(20);
ui->label->setGraphicsEffect(shadowEffect);
三 、不规则窗体
此处需重写 painterEvent 事件
代码如下(.h示例):
protected:
void paintEvent(QPaintEvent *event) override;
代码如下(.cpp示例):
//构造函数中
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
QPixmap pixmap;
pixmap.load(":/flower.png");
ui->label->resize(pixmap.size());
this->resize(pixmap.size());
//设置遮罩
setMask(pixmap.mask());
}
void Widget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.drawPixmap(0,0,QPixmap(":/flower.png"));
}
效果展示: