歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Qt繪制異形窗體

Qt繪制異形窗體

日期:2017/3/1 9:30:05   编辑:Linux編程

異形窗體即不規則窗體,一般采用png圖片,一般繪制異形窗體分兩步:

1、設置遮罩區
2、繪制圖片

使用png圖片的透明部分作為遮罩區,然後繪制圖片,這樣我們就看到一個只繪制了非透明部分的圖形,廢話少說,以實現繪制一只蝴蝶(蝴蝶為半透明)為例,效果如下:

頭文件:

1: #include <QWidget>

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 <QBitmap>

3: #include <QPalette>

4: #include <QPaintEvent>

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: }

Ubuntu 環境下Gtk與QT編譯環境安裝與配置 http://www.linuxidc.com/Linux/2013-08/88539.htm

Linux系統下QT環境搭建 http://www.linuxidc.com/Linux/2013-07/87576.htm

Ubuntu下QT控制台程序無法運行的解決方案以及XTerm的配置方法 http://www.linuxidc.com/Linux/2013-06/86244.htm

Ubuntu 10.04下QT4.7.4移植詳解 http://www.linuxidc.com/Linux/2013-01/77930.htm

Ubuntu 14.04下安裝部署Qt5開發環境 http://www.linuxidc.com/Linux/2014-05/101774.htm

Qt 的詳細介紹:請點這裡
Qt 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved