相比于html等网页绘图,可能QT实现透明圆角比较麻烦一些。首先我们需要,做一个嵌套的QWidget,UI效果如下,两个QWidget之间有一定的margin:
设置了嵌套的QWidget之后,我们将外层的QWidget设置为透明,然后内层的QWidget样式设置为圆角阴影。
//主要方法是嵌套widget外层的widget设置为透明
//然后内层的widget设置对应的border圆角
//之后再在内层的widget中设置阴影
#include <QGraphicsDropShadowEffect>
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
//设置窗口为无边框窗口且显示在最上层
//在任务栏上不显示图标
setWindowFlags(Qt::FramelessWindowHint|Qt::Tool|Qt::WindowStaysOnTopHint);
//外层窗口显示为透明
setAttribute(Qt::WA_TranslucentBackground,true);
//内层窗口添加对应的阴影效果
QGraphicsDropShadowEffect *shadow_e