You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

QtAds停靠系统中无法缩小侧边栏宽度的问题求助

QtAds停靠系统中无法缩小侧边栏宽度的问题求助

我在Python中使用Qt配合QtAds实现基于停靠的UI,但无法缩小侧边栏(导航面板)的宽度。无论我用setMinimumWidth()还是resize()设置多少宽度,它都保持不变。

以下是我的最小可复现示例:

from qtpy import QtWidgets
from qtpy.QtWidgets import QGraphicsView, QMainWindow, QTreeWidget, QWidget, QPlainTextEdit

try:
    import PySide6QtAds as QtAds
except ImportError:
    from PyQtAds import QtAds

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)

        self.dock_manager = None

        QtAds.CDockManager.setConfigFlag(QtAds.CDockManager.OpaqueSplitterResize, True)
        QtAds.CDockManager.setConfigFlag(QtAds.CDockManager.XmlCompressionEnabled, False)
        QtAds.CDockManager.setConfigFlag(QtAds.CDockManager.FocusHighlighting, True)
        self.showMaximized()

        self.dock_manager = QtAds.CDockManager(self)

        # Main working space
        central_widget1 = QtAds.CDockWidget("Tab 1")
        central_widget1.setWidget(QGraphicsView())
        self.dock_manager.addDockWidgetTab(QtAds.CenterDockWidgetArea, central_widget1)

        central_widget2 = QtAds.CDockWidget("Tab 2")
        central_widget2.setWidget(QPlainTextEdit())
        self.dock_manager.addDockWidgetTab(QtAds.CenterDockWidgetArea, central_widget2)

        # Results tab (hidden by default)
        result_widget = QtAds.CDockWidget("Result")
        result_widget.setWidget(QWidget())
        result_widget.setMinimumWidth(600)
        result_dock = self.dock_manager.addDockWidget(QtAds.DockWidgetArea.RightDockWidgetArea, result_widget)
        result_dock.hide()

        # Log Tab
        log_widget = QtAds.CDockWidget("Logs")
        log_widget.setWidget(QWidget())
        log_widget.setMinimumHeight(200)
        self.dock_manager.addDockWidget(QtAds.DockWidgetArea.BottomDockWidgetArea, log_widget)

        # Navigation Sidebar
        navigation_widget = QtAds.CDockWidget("Navigation")
        navigation_widget.setWidget(QTreeWidget())
        navigation_widget.setMinimumWidth(300)
        navigation_dock = self.dock_manager.addDockWidget(QtAds.DockWidgetArea.LeftDockWidgetArea, navigation_widget)
        navigation_widget.resize(500, navigation_widget.height())

        # Details sidebar
        details_widget = QtAds.CDockWidget("Details")
        details_widget.setWidget(QWidget())
        details_widget.setMinimumWidth(300)
        details_dock = self.dock_manager.addDockWidget(
            QtAds.DockWidgetArea.BottomDockWidgetArea, details_widget, navigation_dock
        )
        navigation_dock.resize(500, navigation_dock.height())
        details_dock.resize(500, details_dock.height())

if __name__ == '__main__':
    import sys

    app = QtWidgets.QApplication(sys.argv)
    app.setStyle("windowsvista")
    main_window = MainWindow()
    main_window.show()
    app.exec_()

我尝试过的方法:

  • 设置setMaximumWidth(300),但用户应该能够将其调宽。
  • 使用resize(200, navigation_dock.height()),但宽度没有变化。

如何让QtAds中的侧边栏比默认宽度更窄?有没有办法设置初始宽度,以及窗口调整大小时的默认比例?

任何帮助都将不胜感激!

备注:内容来源于stack exchange,提问作者Drimer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 15:42:58