Qt窗口特殊效果_1

265 阅读1分钟
  • 窗口直接透明
    setWindowOpacity(0.1);
    在这里插入图片描述
  • 部件不透明,窗体背景完全透明,Windows下需要配合无边框风格
setWindowFlags(Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground);

在这里插入图片描述

  • 只设置部件透明
QGraphicsOpacityEffect * opacityEffect = new QGraphicsOpacityEffect;
opacityEffect->setOpacity(0.1);
ui->label->setGraphicsEffect(opacityEffect);

在这里插入图片描述

  • 阴影效果
    
    
```cpp
QGraphicsDropShadowEffect* shadowEffect = new QGraphicsDropShadowEffect;
    //阴影色,透明度
    shadowEffect->setColor(QColor(100,100,100));
    shadowEffect->setBlurRadius(20);//阴影模糊半径
    shadowEffect->setOffset(20);//阴影偏移值
    ui->label->setGraphicsEffect(shadowEffect);

在这里插入图片描述

  • 实现半透明
//重写paintEvent
void MainWindow::paintEvent(QPaintEvent* event)
{   //实现半透明
    QPainter painter(this);
    painter.fillRect(rect(),QColor(255,255,255,256));
}
  • 设置不规则窗体形状
  1. 找一个PNG,加到资源文件
  2.  pixmap.load(":/flower.png");
     resize(pixmap.size());
     setMask(pixmap.mask());//设置遮罩```
    
  3. 重写paintEvent
void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.drawPixmap(0,0,QPixmap(":/flower.png"));
}