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编译环境安装与配置

Linux系统下QT环境搭建

Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法

Ubuntu 10.04下QT4.7.4移植详解

Ubuntu 14.04下安装部署Qt5开发环境

Qt 的详细介绍:请点这里
Qt 的下载地址:请点这里

本文永久更新链接地址

相关内容