歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Qt繪制異形窗體

異形窗體即不規則窗體,一般采用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