新聞中心

        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 不規則窗體

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 大同县| 昌图县| 乐山市| 容城县| 天镇县| 洛南县| 海盐县| 聂荣县| 长垣县| 陆良县| 沙河市| 龙江县| 南安市| 鹰潭市| 太康县| 宝丰县| 沾化县| 肥城市| 濉溪县| 肥西县| 铁力市| 奉化市| 宜兰县| 武安市| 赫章县| 巫山县| 莆田市| 景宁| 平邑县| 寿阳县| 刚察县| 于都县| 砚山县| 娄底市| 泸水县| 白山市| 遂川县| 遂溪县| 自治县| 时尚| 安徽省|