QT设置窗口边框圆角及样式失效

1.  直接设置样式    setStyleSheet("border:5px solid red;border-radius:10px")

2.  this->setAttribute(Qt::WA_TranslucentBackground);//设置窗口背景透明

  this->setWindowFlags(Qt::FramelessWindowHint); //设置无边框窗口 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void SystemWarnDialog::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);  // 反锯齿;
    painter.setBrush(QBrush(Qt::gray));
    painter.setPen(Qt::transparent);
    QRect rect = this->rect();
    rect.setWidth(rect.width() - 1);
    rect.setHeight(rect.height() - 1);
    painter.drawRoundedRect(rect, 15, 15);//也可用QPainterPath 绘制代替
    // painter.drawRoundedRect(rect, 15, 15);
    // {
    //     QPainterPath painterPath;
    //     painterPath.addRoundedRect(rect, 15, 15);
    //     p.drawPath(painterPath);
    // }
    QWidget::paintEvent(event);
}

3.  主窗体加载不了样式时需要在paintEvent事件中加上如下代码:

1
2
3
4
5
6
7
{
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
    QWidget::paintEvent(event);
}

  

posted @   徐沛东  阅读(744)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示