zoukankan      html  css  js  c++  java
  • QT:圆角设置

    Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口。下面分别叙述用这两种方式来实现窗口边框圆角的效果。

    一、使用setStyleSheet方法
     this->setStyleSheet(“QWidget{background-color:gray;border-top-left-radius:15px;border-top-right-radius:5px;}”));  
    使用的主要是使用border-radius 属性,关于这个属性,可选的样式有
    border-top-left-radius 设置左上角圆角;
    border-top-right-radius 设置右上角圆角;
    border-bottom-left-radius 设置左下角圆角;
    border-bottom-right-radius 设置右下角圆角;
    border-radius 设置四个角圆角;

    关于border-radius 后面的参数
    (1)一个参数
    border-radius:15px

     

    (2)两个参数
    border-radius: 15px 50px
    第一个参数设置X轴方向的半径
    第二个参数设置Y轴方向的半径

    从图中可以看出设置一个参数代表X轴和Y轴设置了同样的值,而两个参数分别为X轴和Y轴方向的半径。大家可以根据不同需要去设置参数。

    二、在paintEvent事件中绘制窗口边框
    这里我们需要重写paintEvent方法,具体代码如下:

    void paintEvent(QPaintEvent *event)
    {
        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing); // 反锯齿;
        painter.setBrush(QBrush(Qt::red));
        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);
    }

    效果如下:

    如果不写painter.setRenderHint(QPainter::Antialiasing);则圆角会出现锯齿,如下图。

    仔细对比上图可以看见圆角曲线有锯齿状。

    注意:

    (1)在使用这两种方法的时候需要设置窗口的属性。
    this->setAttribute(Qt::WA_TranslucentBackground);//设置窗口背景透明
    this->setWindowFlags(Qt::FramelessWindowHint); //设置无边框窗口
    
    (2)主窗体加载不了样式时需要在paintEvent事件中加上如下代码。
    {
    QStyleOption opt;
    opt.init(this);
    QPainter p(this);
    style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
    QWidget::paintEvent(event);
    }


    设置按钮的背景边框
    原始图

    设置无边框或者背景透明可以去掉白色方框

    给按钮设置如下样式即可。
     {background-color:transparent;}  
    或者
     {border:none;} 

    原文链接:

    Qt 之 设置窗口边框的圆角

  • 相关阅读:
    IIS 404.17 错误解决方案
    复制文件夹
    Sliverlight Slide 的左右滑动
    Web前端学习第三天——————HTML篇.013图片格式
    Web前端学习第三天——————HTML篇.010布局与选择器
    Web前端学习第二天——————HTML篇.009css
    Web前端学习第一天—————HTML篇.004个人简历制作
    Web前端学习第二天——————HTML篇.008表单
    Web前端学习第一天——————HTML篇.004百度云盘目录
    Web前端学习第三天——————HTML篇.011选择器权重
  • 原文地址:https://www.cnblogs.com/2018shawn/p/11433941.html
Copyright © 2011-2022 走看看