qt_qss窗口阴影

9 篇文章 0 订阅

一、在qss中设置

1.要先在qt.cpp中加入

//窗口透明
setAttribute(Qt::WA_TranslucentBackground, true);

2.然后qss中使用线性渐变

border-top: 1px solid QLinearGradient(y0:0, y1:1,stop: 0 #DADADA, stop: 1 transparent);
border-left: 1px solid QLinearGradient(x0:0, x1:1,stop: 0 #DADADA, stop: 1 transparent);
border-bottom: 1px solid QLinearGradient(y0:0, y1:1,stop: 0 transparent, stop: 1  #DADADA);
border-right: 1px solid QLinearGradient(x0:0, x1:1,stop:  0 transparent, stop: 1 #DADADA);

(不设置窗口透明时,背景是白底。加入后有莫名其妙的黑底...暂时未解决,所以使用方法2)

 

二、在Qt中设置

1. *.h中加入

public:
    void paintEvent(QPaintEvent *event);

2. *.cpp中加入头文件

#include <QtCore/qmath.h> //qSqrt需要
#include <QPaintEvent>
#include <QPainter>
#include <QRectF>

3. *.cpp中加入

//窗口透明
setAttribute(Qt::WA_TranslucentBackground, true);

//去边框,自定义边框
Qt::WindowFlags flags = Qt::Dialog;
flags |= Qt::FramelessWindowHint;
setWindowFlags(flags);

4. *.cpp中加入

可用,好用。

我提前在UI中设置将四边边距设置成8

void TipsDlg::paintEvent(QPaintEvent *event)
{
    QPainterPath path;
    QRectF rect;
    path.setFillRule(Qt::WindingFill);
    path.addRect(10, 10, this->width()-20, this->height()-20); //矩形坐标
    path.addRoundRect(rect, 8, 8);  //矩形圆角

    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing, true);
    painter.fillPath(path, QBrush(Qt::white));

    QColor color(0, 0, 0, 50);  //rgb和透明度
    for(int i=0; i<10; i++)
    {
        QPainterPath path;
        path.setFillRule(Qt::WindingFill);
        
        path.addRect(10-i, 10-i, this->width()-(10-i)*2, this->height()-(10-i)*2);
        //透明度渐变,改变*50可以改变透明速度
        color.setAlpha(150 - qSqrt(i)*50); 
        painter.setPen(color);
        painter.drawPath(path);
    }
}

三、老大给了一个方法,但是不适用于qss。似乎因为qss只适用于css2.0以下版本,但这个box-shadow是css3.0里的...

QDialog#MyDialog
{
    background: #FFFFFF;
    border: 1px solid #CCCCCC;
    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.20);
}

四、

// 设置阴影边框;
       auto shadowEffect = new QGraphicsDropShadowEffect(this);
       shadowEffect->setOffset(0, 0);
       shadowEffect->setColor(Qt::gray);
       shadowEffect->setBlurRadius(SHADOW_WIDTH);
       this->setGraphicsEffect(shadowEffect);

 

  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Qt Creator QSSQt Creator用于样式表设计和实现的。它是一种基于CSS的形式语言,用于创建Qt应用程序的用户界面。Qt Creator QSS语言为设计人员提供了更多的创作空间,并提供了在Qt应用程序中更多的自定义设计选项。 Qt Creator QSS能够在不编写代码的情况下创建和定制控件的样式。它允许设计人员使用简单和有意义的语法来控制界面的外观和风格。Qt Creator QSS允许开发人员自定义应用程序的样式表,并以此为基础为用户界面的设计添加独特的风格和特色。例如,制作独特的背景和按钮样式可以让应用程序人性化。 通过Qt Creator QSS,开发人员可以更容易地设计用户界面,改善应用程序的功能和外观。QT Creator QSS不仅为用户提供了更多的自由定制,还让他们更方便快速的实现不同设备的响应式特性和局限性。 综上所述,Qt Creator QSS为开发人员提供了更多的选择和更广泛的自定义选项,这使得他们可以更好的控制他们的应用程序的外观和特色,从而为用户提供更好的体验。而且通过内置的“预览”功能,设计人员可以立即看到他们的更改结果,使得设计/开发更加高效。 ### 回答2: Qt Creator是一种常用的跨平台开发工具,它允许开发人员创建使用C++编程语言的GUI应用程序。Qt Style Sheets(QSS)是一种基于CSS风格的技术,它可以用于自定义Qt应用程序的UI元素。在Qt Creator中,可以使用QSS来定制应用程序的外观和样式。 在Qt Creator中,可以通过创建.qss文件来定义QSS样式。在这个文件中,可以使用CSS语法来定义各种Qt应用程序的UI元素的样式,如窗口、标签、按钮等。例如,可以使用以下代码来为应用程序中所有按钮定义背景颜色和字体颜色: QPushButton { background-color: red; color: white; } 还可以使用QSS来定义特定状态下的UI元素样式。例如,可以使用以下代码来为应用程序中所有被禁用的按钮定义不同的颜色: QPushButton:disabled { background-color: gray; color: white; } 在Qt Creator中,可以通过加载.qss文件来应用定义的QSS样式。可以将应用程序的样式与QSS相结合,实现自定义风格和外观。通过使用Qt Creator和QSS,开发人员可以快速优雅地实现跨平台GUI应用程序。 ### 回答3: Qt Creator QSS是指Qt Creator的样式表(Qt Style Sheet)设置,它可以自定义Qt Creator界面的外观和风格。QSS可以改变Qt Creator中各个组件的颜色、字体、边框、尺寸等属性,让Qt Creator满足个人偏好和需求。QSS具有易用、灵活、强大的特点,在Qt Creator中可以快速实现界面定制化。 QSS是一种基于CSS语法的样式表语言,它的语法清晰简单,易于理解和修改。Qt Creator中可以通过“文件-新建文件-Qt-Qt Style Sheet File”来新建QSS文件,并可以通过“工具-选项-界面-样式表”来加载和设置样式表。QSS的设置可以针对全局,也可以针对单个组件。例如,可以设置按钮的hover状态下的背景颜色和字体颜色,也可以设置侧边栏的颜色和边框样式等。此外,Qt Creator提供了一些预设的常用QSS样式表,如Dark样式和Flat Light样式,用户可以选择直接使用或自行定制。 总之,Qt Creator QSS功能丰富强大,可以帮助用户定制出符合自己习惯和审美的IDE界面,提高工作效率和舒适度。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值