From 2224cca64ebd67a8d855b6a664e39d163271e157 Mon Sep 17 00:00:00 2001 From: shaojun Date: Tue, 10 Sep 2019 15:58:34 +0800 Subject: [PATCH] feat(plugin):plugin layout error on close window effect --- plugins/datetime/datetimewidget.cpp | 44 ++++++------------- plugins/datetime/datetimewidget.h | 5 +-- plugins/trash/trashwidget.cpp | 5 ++- .../containers/abstractcontainer.cpp | 1 - 4 files changed, 19 insertions(+), 36 deletions(-) diff --git a/plugins/datetime/datetimewidget.cpp b/plugins/datetime/datetimewidget.cpp index cec024ae5..e755e32ee 100644 --- a/plugins/datetime/datetimewidget.cpp +++ b/plugins/datetime/datetimewidget.cpp @@ -65,17 +65,9 @@ void DatetimeWidget::set24HourFormat(const bool value) } } -QSize DatetimeWidget::sizeHint() const -{ - // 最大尺寸 - QFontMetrics fm(TIME_FONT); - return fm.boundingRect("88:88 A.A.").size() + QSize(20, 20); -} - -void DatetimeWidget::resizeEvent(QResizeEvent *e) +QSize DatetimeWidget::curTimeSize() const { const Dock::Position position = qApp->property(PROP_POSITION).value(); - QFontMetrics fm(TIME_FONT); QString format; if (m_24HourFormat) @@ -89,12 +81,20 @@ void DatetimeWidget::resizeEvent(QResizeEvent *e) timeSize.setWidth(dateSize.width()); if (position == Dock::Bottom || position == Dock::Top) { - setMaximumWidth(timeSize.width()); - setMaximumHeight(QWIDGETSIZE_MAX); + return QSize(timeSize.width(), DOCK_MAX_SIZE); } else { - setMaximumWidth(QWIDGETSIZE_MAX); - setMaximumHeight(timeSize.height() * 2); + return QSize(DOCK_MAX_SIZE, timeSize.height() * 2); } +} + +QSize DatetimeWidget::sizeHint() const +{ + return curTimeSize(); +} + +void DatetimeWidget::resizeEvent(QResizeEvent *e) +{ + setMaximumSize(curTimeSize()); QWidget::resizeEvent(e); } @@ -132,21 +132,3 @@ void DatetimeWidget::paintEvent(QPaintEvent *e) painter.drawText(rect(), Qt::AlignCenter, current.toString(format)); } } - -const QPixmap DatetimeWidget::loadSvg(const QString &fileName, const QSize size) -{ - const auto ratio = devicePixelRatioF(); - - QPixmap pixmap(size * ratio); - QSvgRenderer renderer(fileName); - pixmap.fill(Qt::transparent); - - QPainter painter; - painter.begin(&pixmap); - renderer.render(&painter); - painter.end(); - - pixmap.setDevicePixelRatio(ratio); - - return pixmap; -} diff --git a/plugins/datetime/datetimewidget.h b/plugins/datetime/datetimewidget.h index e00b51afa..d95925268 100644 --- a/plugins/datetime/datetimewidget.h +++ b/plugins/datetime/datetimewidget.h @@ -32,6 +32,7 @@ public: explicit DatetimeWidget(QWidget *parent = 0); bool is24HourFormat() const { return m_24HourFormat; } + QSize sizeHint() const; signals: void requestUpdateGeometry() const; @@ -40,11 +41,9 @@ public slots: void set24HourFormat(const bool value); private: - QSize sizeHint() const; void resizeEvent(QResizeEvent *e); void paintEvent(QPaintEvent *e); - - const QPixmap loadSvg(const QString &fileName, const QSize size); + QSize curTimeSize() const; private: bool m_24HourFormat; diff --git a/plugins/trash/trashwidget.cpp b/plugins/trash/trashwidget.cpp index 8116bdefb..c3a8b5981 100644 --- a/plugins/trash/trashwidget.cpp +++ b/plugins/trash/trashwidget.cpp @@ -54,7 +54,10 @@ QWidget *TrashWidget::popupApplet() QSize TrashWidget::sizeHint() const { - return QSize(DOCK_MAX_SIZE, DOCK_MAX_SIZE); + int w = std::min(width(), DOCK_MAX_SIZE); + int h = std::min(height(), DOCK_MAX_SIZE); + int size = std::max(w, h); + return QSize(size, size); } const QString TrashWidget::contextMenu() const diff --git a/plugins/tray/fashiontray/containers/abstractcontainer.cpp b/plugins/tray/fashiontray/containers/abstractcontainer.cpp index 289c88c05..57ee7d84a 100644 --- a/plugins/tray/fashiontray/containers/abstractcontainer.cpp +++ b/plugins/tray/fashiontray/containers/abstractcontainer.cpp @@ -24,7 +24,6 @@ AbstractContainer::AbstractContainer(TrayPlugin *trayPlugin, QWidget *parent) void AbstractContainer::refreshVisible() { - qDebug() << this << size() << minimumSize() << maximumSize(); if (!m_wrapperList.isEmpty()) { //非空保留两边边距 if (m_dockPosition == Dock::Position::Top || m_dockPosition == Dock::Position::Bottom) {