I am using Qt
in Python with QtAds
for a docking-based UI. However, I am unable to make the sidebar (navigation panel) narrower. No matter what width I set using setMinimumWidth()
or resize()
, it always stays the same.
Here is my minimal reproducible example:
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_()
What I Tried:
- Setting
setMaximumWidth(300)
, but the user should have the option to make it wider. - Using
resize(200, navigation_dock.height())
, but the width remains unchanged.
How can I make the sidebar narrower than its default width in QtAds? Is there a way to enforce an initial width and a default ration when resizing the window?
Any help would be appreciated!
发布者:admin,转转请注明出处:http://www.yc00.com/questions/1745304817a4621645.html
评论列表(0条)