我的QT Creator学习笔记(二十)——特殊效果窗体

参考文献:《Qt Creator 快速入门》第三版 霍亚飞编著

一、不规则窗体

qt中提供了部件遮盖mask来实现不规则窗体。下面例子给窗口设置遮盖。

创建基于Qt Widgets的应用,取名mymask。向项目中添加资源文件resouce,向资源文件中添加图片文件bg.png。如下图

在构造函数里添加以下代码

    QPixmap pix;
    //加载图片
    pix.load(":/image/bg.png");
    //设置窗口大小为图片大小
    resize(pix.size());
    //为窗口设置遮掩
    setMask(pix.mask());

widget.h头文件里声明两个事件处理函数

protected:
    void paintEvent(QPaintEvent *event) override;
    void mouseMoveEvent(QMouseEvent *event) override;

并在cpp中实现函数

void Widget::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    //从窗口左上角开始绘制图片
    painter.drawPixmap(0,0,QPixmap(":/image/bg.png"));

}

void Widget::mouseMoveEvent(QMouseEvent *event)
{
    //关闭窗口
    close();
}

效果如下

 

二、实现阴影效果和透明度效果

使用QGraphicsDropShadowEffect实现阴影效果。

   使用QGraphicsOpacityEffect实现透明效果。

创建widget项目,ui文件中拖入label,内容改为“Drop shadow test”。再拖入一个label,内容改为“Opacity”。在构造函数中加入以下代码,给label加阴影效果,给label_2实现半透明效果。

    //创建阴影效果
    QGraphicsDropShadowEffect* effect=new QGraphicsDropShadowEffect;
    //设置阴影颜色
    effect->setColor(QColor(100,100,100,100));
    //设置阴影模糊半径发
    effect->setBlurRadius(2);
    //设置阴影偏移值
    effect->setOffset(10);
    //标签部分使用阴影效果
    ui->label->setGraphicsEffect(effect);

     //创建透明效果
    QGraphicsOpacityEffect* effect1=new QGraphicsOpacityEffect;
    //设置透明度
    effect1->setOpacity(0.5);
    //标签2使用透明效果
    ui->label_2->setGraphicsEffect(effect1);

效果如下

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值