modify dialog frame

This commit is contained in:
brige 2025-11-21 01:47:01 +08:00
parent 8eb83d9cbf
commit e9c4516f0f
3 changed files with 37 additions and 4 deletions

View File

@ -76,6 +76,8 @@ void RecourceHelper::ChangeSkin(const QString& skin) {
if (file.open(QFile::ReadOnly | QFile::Text)) {
QTextStream stream(&file);
QString qss = stream.readAll();
qss += "\nDialogTitleBar{border-top-left-radius:10px;border-top-right-radius:10px;}\n";
qss += "QWidget#DialogContainer{border-radius:10px;background: palette(window);}\n";
qApp->setStyleSheet(qss);
file.close();
}

View File

@ -11,6 +11,11 @@ FrameTitleBar{
border-top-right-radius:10px;
}
QWidget#DialogContainer {
border-radius:10px;
background: #212F3C;
}
QFrame>QLabel#sys_icon {
max-width:24px;
min-width:24px;

View File

@ -3,6 +3,8 @@
#include <QStyleOption>
#include <QPainter>
#include <QVBoxLayout>
#include <QGraphicsDropShadowEffect>
#include <QColor>
#include "FrameTitleBar.h"
#include "FramelessDelegate.h"
@ -50,12 +52,36 @@ bool Dialog::nativeEvent(const QByteArray& eventType, void* message, qintptr* re
}
void Dialog::paintEvent(QPaintEvent* event) {
QStyleOption opt;
opt.initFrom(this);
Q_UNUSED(event);
this->setAutoFillBackground(false);
QPainter p(this);
style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
p.setCompositionMode(QPainter::CompositionMode_Source);
p.fillRect(rect(), Qt::transparent);
}
void Dialog::InitFrame() {
setAttribute(Qt::WA_TranslucentBackground, true);
if (ui_ && ui_->verticalLayout && ui_->titleBar && ui_->mianWidget) {
ui_->verticalLayout->setContentsMargins(12, 12, 12, 12);
QWidget* container = new QWidget(this);
container->setObjectName("DialogContainer");
container->setAutoFillBackground(true);
container->setAttribute(Qt::WA_StyledBackground, true);
QVBoxLayout* containerLayout = new QVBoxLayout(container);
containerLayout->setSpacing(0);
containerLayout->setContentsMargins(0, 0, 0, 0);
ui_->verticalLayout->removeWidget(ui_->titleBar);
ui_->verticalLayout->removeWidget(ui_->mianWidget);
containerLayout->addWidget(ui_->titleBar);
containerLayout->addWidget(ui_->mianWidget);
ui_->verticalLayout->addWidget(container);
auto *shadow = new QGraphicsDropShadowEffect(this);
shadow->setBlurRadius(24);
shadow->setColor(QColor(0, 0, 0, 100));
shadow->setOffset(0, 8);
container->setGraphicsEffect(shadow);
}
}