QT异形图形的开发

来源:互联网 发布:赌博平台源码 编辑:程序博客网 时间:2024/06/10 09:30

      • 这里的异形图形是指哪种
      • 原图
      • 处理后效果
      • 原代码
      • 部分说明

这里的异形图形是指哪种?

这里所谓的异形图形是指非正方形或矩形这种规则的图形。 因为,QT普通的一个Dialog或widget生成的一个窗口就是一个矩形或正方形,如果要显示不规则图形,该怎么处理呢?下面是一个简单的小实例。


原图

这里写图片描述


处理后效果

这里写图片描述


原代码


.h文件

#ifndef YIXINGDIALOG_H#define YIXINGDIALOG_H#include <QWidget>#include <QToolButton>class YiXingDialog : public QWidget{    Q_OBJECTpublic:    explicit YiXingDialog(QWidget *parent = 0);    void paintEvent(QPaintEvent* event);protected:    virtual void mouseMoveEvent(QMouseEvent *);signals:public slots:private:    QPixmap m_pixmap;};#endif // YIXINGDIALOG_H

.cpp 文件

#include "yixingdialog.h"#include <QBitmap>#include <QPalette>#include <QPaintEvent>#include <QDebug>#include <QtMath>YiXingDialog::YiXingDialog(QWidget *parent) :    QWidget(parent, Qt::FramelessWindowHint){    this->setWindowOpacity(0.9); // 这里设置整体的透明度。    m_pixmap.load(":/images/background.png");    m_pixmap = m_pixmap.scaled(size());    setAutoFillBackground(true);    setMask(m_pixmap.mask());  //这里设置遮罩层,如果不设置原图透明部份为黑色。}void YiXingDialog::paintEvent(QPaintEvent *event){    QPalette bgPalette = this->palette();    bgPalette.setBrush(QPalette::Background, m_pixmap);    this->setPalette(bgPalette);    //画图操作}void YiXingDialog::mouseMoveEvent(QMouseEvent *event){    int moveX = cursor().pos().x();    int moveY = cursor().pos().y();    move(moveX, moveY);    //这里监控鼠标的移动过程。如果拖动图片时,图片进行移动。}

main 文件

#include <QApplication>#include "yixingdialog.h"int main(int argc, char *argv[]){    QApplication a(argc, argv);    YiXingDialog yixing;    yixing.show();    return a.exec();}

部分说明

那张效果图是可以拖动的,后面的背景是因为在桌面上。如果不在桌面可以看到是透明的。

0 0