实现过程
实现圆角矩形背景过程有两步操作:
1.首先需要设置为无边框窗口和窗口背景透明
2.通过绘画事件绘制带有圆角矩形的背景图
下面是我自己通过ps制作的一个圆角矩形背景图:
实现代码
main.cpp
#include "widget.h"
#include <QApplication>
#include "mywindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MyWindow *window = new MyWindow(nullptr);
window->show();
return a.exec();
}
窗口.h文件
#ifndef MYWINDOW_H
#define MYWINDOW_H
#include <QWidget>
class MyWindow : public QWidget
{
Q_OBJECT
public:
explicit MyWindow(QWidget *parent = nullptr);
protected:
void paintEvent(QPaintEvent *event);
};
#endif // MYWINDOW_H
窗口.cpp文件
#include "mywindow.h"
#include <QPainter>
MyWindow::MyWindow(QWidget *parent) : QWidget(parent)
{
this->setAttribute(Qt::WA_TranslucentBackground);//设置窗口背景透明
this->setWindowFlags(Qt::FramelessWindowHint); //设置无边框窗体
}
void MyWindow::paintEvent(QPaintEvent *event)
{
//绘制背景图
QPixmap pixmap(":/1.png");
QPainter painter(this);
painter.drawPixmap(0,0,pixmap.scaled(this->size(),Qt::IgnoreAspectRatio,Qt::SmoothTransformation)); // 绘制不规则背景
}
运行结果
窗口显示如下