異形窗體即不規則窗體,一般采用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 的下載地址:請點這裡