新聞中心

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

        QT實現不規則窗體

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

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

        本文引用地址:http://www.104case.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 不規則窗體

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 昭苏县| 山东省| 新河县| 永顺县| 碌曲县| 无为县| 威远县| 秦皇岛市| 三亚市| 文水县| 沈丘县| 特克斯县| 红桥区| 报价| 永年县| 哈密市| 南京市| 台安县| 运城市| 邵武市| 松江区| 克什克腾旗| 邵东县| 临城县| 平果县| 阿城市| 乌恰县| 栾川县| 疏勒县| 梁山县| 延长县| 灌南县| 西安市| 磴口县| 洞口县| 英吉沙县| 改则县| 枣强县| 获嘉县| 平乐县| 华宁县|