c4dd4d8adf
Two independent root causes for '左右能拉,上下不能拉': 1. Event delivery: the top 6px edge band belongs to QMenuBar, which actively consumes mouse events (menu hover) — nothing ever propagated to QMainWindow, so T/TL/TR (and maximize-restore from top edge) were dead on every platform. Install an event filter on menuBar()/statusBar(): within the edge band it handles hover cursor, press (grabMouse), drag and release; outside the band everything passes through (menus open normally, native QSizeGrip corner drag preserved). 2. Layout minimum: MonitorPanel's minimumSizeHint (~1015px of stacked tables/group boxes) propagated through QTabWidget → central widget → QMainWindow, making the window minimum size 898x1121. Any vertical shrink was clamped dead. Set explicit per-tab-page minimumSize (320x200) + window minimumSize (760x480). Tests: test_resize.py now drives edges through real event delivery (childAt → child widget, propagation/filter path) for L/R/T/B/TL/TR/BL, verifies BR stays on QSizeGrip, maximize-restore via menubar filter, and minimum-size regression. All 8 suites pass.