Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
this->setAttribute(Qt::WA_TranslucentBackground);
this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint |Qt::CustomizeWindowHint);
QGraphicsDropShadowEffect *shadow_effect = new QGraphicsDropShadowEffect(this);
shadow_effect->setOffset(10, 10);
shadow_effect->setColor(Qt::gray);
shadow_effect->setBlurRadius(8);
// //1. 控件阴影效果
// ui->pushButton->setGraphicsEffect(shadow_effect);//不能共用一个阴影效果,只有最后一个设置的有效
// ui->radioButton->setGraphicsEffect(shadow_effect);
// ui->checkBox->setGraphicsEffect(shadow_effect);
// ui->comboBox->setGraphicsEffect(shadow_effect);
// ui->spinBox->setGraphicsEffect(shadow_effect);
// ui->lineEdit->setGraphicsEffect(shadow_effect);
// //2. 窗口阴影效果(这种方法有问题,还是要重写paintevent)
// setGraphicsEffect(shadow_effect);
}
Widget::~Widget()
{
delete ui;
}
//2. 窗口阴影效果
void Widget::paintEvent(QPaintEvent *event)
{
QPainterPath path;
path.setFillRule(Qt::WindingFill);
path.addRect(10, 10, width()-20, height()-20);
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.fillPath(path, QBrush(Qt::white));
QColor color(0, 0, 50);
for(int i = 0; i < 10; i++)
{
QPainterPath path;
path.setFillRule(Qt::WindingFill);
path.addRect(10-i, 10-i, width()-(10-i)*2, height()-(10-i)*2);
color.setAlpha(150 - sqrt(i)*50);
painter.setPen(color);
painter.drawPath(path);
}
}
窗体部件效果之阴影
最新推荐文章于 2019-09-03 16:11:00 发布