fix update showwidget radius
This commit is contained in:
parent
5040cc5eb7
commit
a8ebb5f89b
|
@ -47,15 +47,7 @@ void GlobalImageWidget::updateButtonColor(const QColor& color) {
|
|||
|
||||
void GlobalImageWidget::updateWidgetBackgroundColor(const QColor& color)
|
||||
{
|
||||
if (!m_showwidget) {
|
||||
qDebug() << "m_showwidget is null";
|
||||
return;
|
||||
} else {
|
||||
QPalette palette = m_showwidget->palette();
|
||||
palette.setColor(QPalette::Background, color);
|
||||
m_showwidget->setAutoFillBackground(true);
|
||||
m_showwidget->setPalette(palette);
|
||||
}
|
||||
m_showwidget->setBackgroundColor(color);
|
||||
|
||||
}
|
||||
|
||||
|
@ -85,6 +77,14 @@ void GlobalImageWidget::updateOverlayImage(const QString& overlayImagePath) {
|
|||
}
|
||||
}
|
||||
|
||||
void GlobalImageWidget::updatescale()
|
||||
{
|
||||
graphicsView->resetTransform();
|
||||
QPointF centerPoint(1500, 600);
|
||||
graphicsView->centerOn(centerPoint);
|
||||
graphicsView->scale(1, 1);
|
||||
}
|
||||
|
||||
GlobalImageWidget::GlobalImageWidget(QWidget *parent, const QString& coverFilePath)
|
||||
: QWidget(parent), m_coverFilePath(coverFilePath) {
|
||||
|
||||
|
@ -165,6 +165,8 @@ Globalthemefeature::Globalthemefeature(QWidget *parent, const QString& coverFile
|
|||
RoundedWidget::RoundedWidget(QWidget *parent)
|
||||
: QWidget(parent), m_radius(0)
|
||||
{
|
||||
setAttribute(Qt::WA_TranslucentBackground);
|
||||
setRadius(6);
|
||||
}
|
||||
|
||||
void RoundedWidget::setRadius(int radius)
|
||||
|
@ -172,18 +174,30 @@ void RoundedWidget::setRadius(int radius)
|
|||
m_radius = radius;
|
||||
}
|
||||
|
||||
void RoundedWidget::setBackgroundColor(const QColor &color)
|
||||
{
|
||||
backgroundColor = color;
|
||||
update();
|
||||
}
|
||||
|
||||
void RoundedWidget::paintEvent(QPaintEvent *event)
|
||||
{
|
||||
Q_UNUSED(event)
|
||||
|
||||
QPainter painter(this);
|
||||
painter.setRenderHint(QPainter::Antialiasing);
|
||||
painter.setPen(Qt::black);
|
||||
painter.setBrush(Qt::NoBrush); // 设置填充为无色
|
||||
painter.setRenderHint(QPainter::Antialiasing, true); // 开启抗锯齿
|
||||
|
||||
const QRectF rect = contentsRect().adjusted(1, 1, -1, -1);
|
||||
QPainterPath path;
|
||||
path.addRoundedRect(rect, m_radius, m_radius);
|
||||
QRectF rect = contentsRect().adjusted(borderWidth, borderWidth, -borderWidth, -borderWidth);
|
||||
int r = std::min(rect.width(), rect.height()) / 2; // 计算圆角半径
|
||||
int actualRadius = std::min(m_radius, r); // 取实际圆角半径和计算半径的较小值
|
||||
|
||||
// 绘制背景
|
||||
painter.setPen(Qt::NoPen);
|
||||
painter.setBrush(backgroundColor);
|
||||
painter.drawRoundedRect(rect, actualRadius, actualRadius);
|
||||
|
||||
// 绘制边框
|
||||
// painter.setPen(QPen(borderColor, borderWidth));
|
||||
// painter.setBrush(Qt::NoBrush);
|
||||
// painter.drawRoundedRect(rect, actualRadius, actualRadius);
|
||||
|
||||
painter.drawPath(path);
|
||||
}
|
||||
|
|
|
@ -22,12 +22,16 @@ public:
|
|||
RoundedWidget(QWidget *parent = nullptr);
|
||||
|
||||
void setRadius(int radius);
|
||||
void setBackgroundColor(const QColor& color);
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *event) override;
|
||||
|
||||
private:
|
||||
int m_radius;
|
||||
QColor backgroundColor = Qt::white; // 背景颜色
|
||||
QColor borderColor = Qt::white; // 边框颜色
|
||||
int borderWidth = 1; // 边框宽度
|
||||
};
|
||||
|
||||
class CustomGraphicsView : public QGraphicsView {
|
||||
|
@ -46,6 +50,7 @@ public:
|
|||
void updateWidgetBackgroundColor(const QColor& color);
|
||||
void update(const QString& coverFilePath);
|
||||
void updateOverlayImage(const QString& overlayImagePath);
|
||||
void updatescale();
|
||||
private:
|
||||
CustomGraphicsView* graphicsView;
|
||||
QString m_coverFilePath;
|
||||
|
|
|
@ -169,11 +169,13 @@ void GlobalThemeWidget::initExteriorWidget()
|
|||
|
||||
m_preview->updateWidgetBackgroundColor(selectedColor);
|
||||
m_preview->updateOverlayImage(":/resource/background/panel-light.png");
|
||||
m_preview->updatescale();
|
||||
}else if(index == 1){
|
||||
QColor selectedColor = combobox->itemData(index).value<QColor>();
|
||||
|
||||
m_preview->updateWidgetBackgroundColor(selectedColor);
|
||||
m_preview->updateOverlayImage(":/resource/background/panel-dark.png");
|
||||
m_preview->updatescale();
|
||||
}
|
||||
|
||||
});
|
||||
|
@ -211,6 +213,7 @@ void GlobalThemeWidget::initFilletWidget()
|
|||
|
||||
QObject::connect(filletslider, &QSlider::valueChanged, [=](int value) {
|
||||
showButton->setText(QString::number(value)+"px");
|
||||
m_preview->updatescale();
|
||||
m_preview->updateWidgetRadius(value);
|
||||
|
||||
});
|
||||
|
@ -248,6 +251,7 @@ void GlobalThemeWidget::AccentColorWidget()
|
|||
qDebug() << "Selected color:" << selectedColor;
|
||||
|
||||
qDebug() << "RGB values:" << selectedColor.red() << selectedColor.green() << selectedColor.blue();
|
||||
m_preview->updatescale();
|
||||
m_preview->updateButtonColor(selectedColor);
|
||||
});
|
||||
|
||||
|
|
|
@ -35,9 +35,6 @@ class MainWindow : public QMainWindow
|
|||
public:
|
||||
MainWindow(QWidget *parent = nullptr);
|
||||
~MainWindow();
|
||||
// void mousePressEvent(QMouseEvent *event);
|
||||
// void mouseMoveEvent(QMouseEvent *event);
|
||||
// void mouseReleaseEvent(QMouseEvent *event);
|
||||
|
||||
void mousePressEvent(QMouseEvent *event);
|
||||
void mouseMoveEvent(QMouseEvent * event);
|
||||
|
|
Loading…
Reference in New Issue