linux qt绘框,Qt绘制异形窗体

异形窗体即不规则窗体,一般采用png图片,一般绘制异形窗体分两步:

1、设置遮罩区

2、绘制图片

使用png图片的透明部分作为遮罩区,然后绘制图片,这样我们就看到一个只绘制了非透明部分的图形,废话少说,以实现绘制一只蝴蝶(蝴蝶为半透明)为例,效果如下:

c1d3795a9e0637b83e10351fad4fef08.png

头文件:

1: #include

2: class TransDialog : public QWidget

3: {

4:    Q_OBJECT

5: public:

6:    explicit TransDialog(QWidget *parent = 0);

7:    void paintEvent(QPaintEvent *event) ;

8: private:

9:    QPixmap m_Pixmap;

10: };

11:

cpp文件:

1: #include "transdialog.h"

2: #include

3: #include

4: #include

5:

6: TransDialog::TransDialog(QWidget *parent) :

7:    QWidget(parent,Qt::FramelessWindowHint)

8: {

9:    //让程序背景半透明

10:    this->setWindowOpacity(0.5);

11:    //加载一幅有部分区域是透明的图片作为程序的界面

12:    m_Pixmap.load("hudie.png");

13:    resize(640, 480);

14:    //保持图片跟界面一样大小

15:    m_Pixmap = m_Pixmap.scaled(size());

16:  //设置自动填充

17:    setAutoFillBackground(true);

18:

19:    //不规则窗口的关键,将图片透明的地方设为穿透

20:    setMask( m_Pixmap.mask() );

21:

22: }

23:

24: void TransDialog::paintEvent(QPaintEvent *event)

25: {

26:    //绘制背景图片

27:    QPalette bgPalette = this->palette();

28:    bgPalette.setBrush(QPalette::Background,m_Pixmap);

29:    this->setPalette(bgPalette);

30: }

Qt 的详细介绍:请点这里

Qt 的下载地址:请点这里

0b1331709591d260c1c78e86d0c51c18.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值