diff --git a/dock-network-plugin/dockcontentwidget.h b/dock-network-plugin/dockcontentwidget.h index f3af41f3..97310033 100644 --- a/dock-network-plugin/dockcontentwidget.h +++ b/dock-network-plugin/dockcontentwidget.h @@ -69,6 +69,8 @@ class DockContentWidget : public QWidget m_mainLayout->setContentsMargins(margin); } void setMinHeight(int minHeight) { m_minHeight = minHeight; } + +public Q_SLOTS: void updateSize() { auto h = Dock::DOCK_POPUP_WIDGET_MAX_HEIGHT - 20 - m_mainLayout->contentsMargins().top() - (m_netCheckBtn->isVisible() ? (m_netSetBtn->height() + m_netCheckBtn->height() + 10) : m_netSetBtn->height()); m_netView->setMaxHeight(h); @@ -90,6 +92,24 @@ class DockContentWidget : public QWidget return QWidget::eventFilter(watch, event); } + void showEvent(QShowEvent *event) override + { + updateSize(); + QWidget::showEvent(event); + QMetaObject::invokeMethod(this, [this]() { + updateSize(); + resize(size()); + }, Qt::QueuedConnection); + } + + void hideEvent(QHideEvent *event) override + { + QWidget::hideEvent(event); + m_minHeight = -1; + // 隐藏时更新尺寸为折叠状态,确保下次显示时初始尺寸正确 + QMetaObject::invokeMethod(this, "updateSize", Qt::QueuedConnection); + } + private: QVBoxLayout *m_mainLayout; NetView *m_netView; diff --git a/net-view/window/netview.cpp b/net-view/window/netview.cpp index 7984e417..5822fb1d 100644 --- a/net-view/window/netview.cpp +++ b/net-view/window/netview.cpp @@ -413,6 +413,7 @@ void NetView::showEvent(QShowEvent *event) if (m_shouldUpdateExpand) m_manager->exec(NetManager::ToggleExpand, ""); m_shouldUpdateExpand = false; + updateGeometries(); } void NetView::hideEvent(QHideEvent *event)