LoginWnd::LoginWnd(QWidget *parent) :
QWidget(parent),
ui(new Ui::LoginWnd)
{
ui->setupUi(this);
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
// drawIrregularShape();
//方法二和方法三都需要加上这一行代码配合
setAttribute(Qt::WA_TranslucentBackground);
}
LoginWnd::~LoginWnd()
{
delete ui;
}
void LoginWnd::drawIrregularShape()
{
//方法一:此方法并不好,边框会出现黑色线条
pixmap.load(":/images/login/cat.png");//加载掩码图像
setMask(QBitmap(pixmap.mask())); //设置窗体的掩码图像,抠除图像的白色区域实现不规则窗体
QPalette palette;//设置调色板
palette.setBrush(QPalette::Window, QBrush(pixmap));//将调色板的画刷设置为掩码位图,在不规则窗体上显示出掩码位图
setPalette(palette);
// setAutoFillBackground(true);
resize(pixmap.size());
qDebug() << "sfter resize:" << size();
}
void LoginWnd::drawIrregularShape(QPainter &painter)
{
// //方法二:ok
// pixmap.load(":/images/login/cat.png");//图片大小要和界面大小一致,否则如果用resize图片上会出现轻微的不规则边
// setMask(QBitmap(pixmap.mask()));
// resize(pixmap.size());
//方法三:ok
pixmap.load(":/images/login/cat.png");//图片大小要和界面大小一致,否则如果用resize图片上会出现轻微的不规则边
// pixmap = pixmap.scaled(size());
// resize(pixmap.size());
// qDebug() << "sfter resize:" << size();
painter.drawPixmap( 0, 0, pixmap);
}
void LoginWnd::paintEvent(QPaintEvent *)
{
QPainter painter(this);
drawIrregularShape(painter);
}
窗体部件效果之不规则窗体
最新推荐文章于 2023-01-06 11:26:11 发布