【QT】QT不规则窗体效果——遮罩

2

不规则窗体效果——遮罩

根据一张图片来设置窗体显示效果。setMask

#include "widget.h"
#include "ui_widget.h"
#include<QPixmap>
#include<QBitmap>
#include<QPainter>
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());//设置窗体大小
    //设置遮罩
    this->setMask(pixmap.mask());
}

Widget::~Widget()
{
    delete ui;
}

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.drawPixmap(0,0,QPixmap(":/flower.png"));

}

void Widget::mousePressEvent(QMouseEvent *event)
{
    close();
}