窗体部件效果之不规则窗体


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);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值