久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > QT實現不規則窗體

QT實現不規則窗體

作者: 時間:2016-10-08 來源:網絡 收藏

看到網上有很多的實現,效果很酷.于是使用也實現了一個,實現非常簡單,只需要設置一個mask(遮掩)圖片,這個圖片的格式可以使用png或bmp格式,我使用了png格式,默認窗體是矩形的,使用png圖像,將需要隔離在窗體之外的區域的像素設置為白色或透明色,其他顏色的區域對應顯示出來的窗體.關鍵代碼就幾行.

本文引用地址:http://cqxgywz.com/article/201610/305993.htm

#ifndef IRREGULARFORM_H

#define IRREGULARFORM_H

#include

#include ui_irregularform.h

#include

#include

#include

#include

class IrregularForm : public QWidget

{

Q_OBJECT

public:

IrregularForm(QWidget *parent = 0);

~IrregularForm();

protected:

void mouseMoveEvent(QMouseEvent *event);

void mousePressEvent(QMouseEvent *event);

void mouseReleaseEvent(QMouseEvent *event);

private:

Ui::IrregularFormClass ui;

QPoint mouseMovePos;

};

#endif // IRREGULARFORM_H

#include irregularform.h

IrregularForm::IrregularForm(QWidget *parent)

: QWidget(parent)

{

setWindowFlags(Qt::FramelessWindowHint);

QPixmap mask(:/IrregularForm/Resources/mask.png);//加載掩碼圖像

setMask(QBitmap(mask.mask())); //設置窗體的掩碼圖像,摳除圖像的白色區域實現

QPalette p;//設置調色板

p.setBrush(QPalette::Window, QBrush(mask));//將調色板的畫刷設置為掩碼位圖,在不規則窗體上顯示出掩碼位圖

setPalette(p);

mouseMovePos = QPoint(0, 0);

}

IrregularForm::~IrregularForm()

{

}

void IrregularForm::mouseMoveEvent(QMouseEvent *event)//鼠標按下并移動則移動不規則窗體

{

if(mouseMovePos != QPoint(0, 0))

{

move(geometry().x() + event->globalPos().x() - mouseMovePos.x(), geometry().y() + event->globalPos().y() - mouseMovePos.y());

mouseMovePos = event->globalPos();

}

}

void IrregularForm::mousePressEvent(QMouseEvent *event)

{

mouseMovePos = event->globalPos();

}

void IrregularForm::mouseReleaseEvent(QMouseEvent *event)

{

mouseMovePos = QPoint(0, 0);

}

效果圖



關鍵詞: QT 不規則窗體

評論


相關推薦

技術專區

關閉