设置不规则窗体

Posted Respect@

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置不规则窗体相关的知识,希望对你有一定的参考价值。

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
protected:
    void paintEvent(QPaintEvent *event) override;//重画
    void mousePressEvent(QMouseEvent *event) override;//鼠标按下事件
private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"
#include <QPixmap>
#include <QBitmap>
#include <QPainter>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    QPixmap pixmap;
    pixmap.load(":/flower.png");
    ui->label->resize(pixmap.size());
    resize(pixmap.size());

    //设置遮罩
    setMask(pixmap.mask());
}

Widget::~Widget()
{
    delete ui;
}

void Widget::paintEvent(QPaintEvent *event)//重绘
{
    QPainter painter(this);
    painter.drawPixmap(0,0,QPixmap(":/flower.png"));
}

void Widget::mousePressEvent(QMouseEvent *event)
{
    close();
}


main.cpp

#include "widget.h"

#include <QApplication>

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

以上是关于设置不规则窗体的主要内容,如果未能解决你的问题,请参考以下文章

设置不规则窗体

C#制作不规则窗体,如何使边缘平滑(抗锯齿)?

WPF设计の不规则窗体

wpf窗体阴影

JFrame 不规则窗体

详解使用C#制作不规则窗体的方法