QT软件开发: QWidget窗口绘制圆角

Posted DS小龙哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT软件开发: QWidget窗口绘制圆角相关的知识,希望对你有一定的参考价值。

一、运行效果

 二、核心代码

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
protected:
    void paintEvent(QPaintEvent *p);
    .................
}


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

    //隐藏标题栏
    setWindowFlags(Qt::FramelessWindowHint);//无边框 置顶

    //设置窗口背景透明
    setAttribute(Qt::WA_TranslucentBackground);

    //设置样式
    this->setStyleSheet("#Widget{background-color: rgba(255, 0, 0, 150);}");
}


void Widget::paintEvent(QPaintEvent *p1)
{
    //绘制样式
    QStyleOption opt;
    opt.initFrom(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);//绘制样式

    QBitmap bmp(this->size());
    bmp.fill();
    QPainter painter(&bmp);
    painter.setPen(Qt::NoPen);
    painter.setBrush(Qt::black);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.drawRoundedRect(bmp.rect(), 12, 12);
    setMask(bmp);
}

以上是关于QT软件开发: QWidget窗口绘制圆角的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Qt 中的弹出窗口小部件上创建平滑的圆角

Qt绘图学习

Qt入门系列开发教程基础控件篇小部件(所有控件的基类QWidget)

Qt学习之路2---窗口组件及窗口类型

QT软件开发:解决隐藏QWidget标题栏后窗体无法移动问题

Qt如何不让父窗口的颜色影响子窗口