1.环境:qt6.7 MSVC C++
2.前置知识:
qss无法对控件设置外阴影效果
使用QGraphicsDropShadowEffect库设置外阴影
3.无效的情况:
代码如下:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QGraphicsDropShadowEffect>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QGraphicsDropShadowEffect* shadowEffect = new QGraphicsDropShadowEffect(this);
shadowEffect->setBlurRadius(15.0);
shadowEffect->setColor(Qt::black);
shadowEffect->setOffset(5.0, 5.0);
// 应用阴影效果到 QWidget
ui->widget->setGraphicsEffect(shadowEffect);
}
MainWindow::~MainWindow()
{
delete ui;
}
designer界面如下:
运行结果:
4.解决方法:给qwidget加个背景色。因为默认的qwidget是透明的,透明的控件是不会有投影的。
5.运行结果: