qt-17不规则窗体

不规则窗体

知识点

感觉这个就是在图片背景 贴了白色

shape.h

cpp 复制代码
#ifndef SHAPE_H
#define SHAPE_H

#include <QWidget>


class Shape : public QWidget
{
    Q_OBJECT

public:
    Shape(QWidget *parent = nullptr);
    ~Shape();
protected:
    void mousePressEvent(QMouseEvent*);
    void mouseMoveEvent(QMouseEvent *event);
    void paintEvent(QPaintEvent*);
private:
    QPoint DragPosition;

};
#endif // SHAPE_H

shape.cpp

cpp 复制代码
#include "shape.h"
#include <QMouseEvent>
#include <QPainter>
#include <QPixmap>
#include <QBitmap>


Shape::Shape(QWidget *parent)
    : QWidget(parent)
{
    QPixmap Pix;
    Pix.load("312.ico",0,Qt::AvoidDither|Qt::ThresholdDither|Qt::ThresholdAlphaDither);
    resize(Pix.size());
    setMask(QBitmap(Pix.mask()));

}

Shape::~Shape() {}

void Shape::mousePressEvent(QMouseEvent *Event)
{
    if(Event->button() == Qt::LeftButton)
    {
        DragPosition = Event->globalPos() - frameGeometry().topLeft();
        Event->accept();
    }
    if(Event->button() == Qt::RightButton)
    {
        close();
    }

}

void Shape::mouseMoveEvent(QMouseEvent *Event)
{
    if(Event->buttons()&Qt::LeftButton)
    {
        move(Event->globalPos()-DragPosition);
        Event->accept();
    }
}

void Shape::paintEvent(QPaintEvent*)
{
    QPainter Painter(this);
    Painter.drawPixmap(0,0,QPixmap("312.ico"));

}

main.cpp

cpp 复制代码
#include "shape.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Shape w;
    w.show();
    return a.exec();
}

运行图

相关推荐
_w_z_j_3 分钟前
C++----bitmap位图的使用
开发语言·c++
BingeBlog3 分钟前
[01] Qt的UI框架选择和对比
开发语言·c++·笔记·qt·ui·开源软件
小许学java24 分钟前
Spring AI快速入门以及项目的创建
java·开发语言·人工智能·后端·spring·ai编程·spring ai
AGG_Chan37 分钟前
flutter专栏--深入了解widget原理
开发语言·javascript·flutter
Darenm1111 小时前
JavaScript事件流:冒泡与捕获的深度解析
开发语言·前端·javascript
whltaoin1 小时前
Java 后端与 AI 融合:技术路径、实战案例与未来趋势
java·开发语言·人工智能·编程思想·ai生态
wjs20241 小时前
jEasyUI 自定义窗口工具栏
开发语言
二十雨辰2 小时前
vite与ts的结合
开发语言·前端·vue.js
亦良Cool2 小时前
如何部署一个Java项目
java·开发语言
沐知全栈开发2 小时前
JavaScript 输出
开发语言