gpt4 book ai didi

python - 如何在没有中央小部件(PyQt4)的应用程序中设置 QDockWidget 初始(默认)大小?

转载 作者:太空狗 更新时间:2023-10-29 22:23:09 25 4
gpt4 key购买 nike

我有一个包含很多 QDockWidgets 的应用程序并且没有中央小部件。我想设置其中的一些 QDockWidgets初始大小(应用程序启动时的大小),但我不想限制它们的最小/最大大小。

怎么做?例如,我需要将初始大小 150x75 设置为其中之一。我尝试了明显的方法(例如与停靠小部件内容相关的 QWidget.Resize()),但它根本不起作用。

这是一个简化的情况模型:

from PyQt4 import QtCore, QtGui

app = QtGui.QApplication([''])

mw = QtGui.QMainWindow() # mw = MainWindow
mw.setCentralWidget(None)
mw.showMaximized()

mw.dockWdg1 = QtGui.QDockWidget(mw)
mw.content1 = QtGui.QTreeWidget()
mw.dockWdg1.setWidget(mw.content1)
mw.addDockWidget(QtCore.Qt.DockWidgetArea(2), mw.dockWdg1)
mw.dockWdg1.setWindowTitle("1st dock widget")

mw.dockWdg2 = QtGui.QDockWidget(mw)
mw.content2 = QtGui.QTreeWidget()
mw.dockWdg2.setWidget(mw.content2)
mw.addDockWidget(QtCore.Qt.DockWidgetArea(1), mw.dockWdg2)
mw.dockWdg2.setWindowTitle("2nd dock widget")

mw.dockWdg3 = QtGui.QDockWidget(mw)
mw.content3 = QtGui.QTreeWidget()
mw.dockWdg3.setWidget(mw.content3)
mw.addDockWidget(QtCore.Qt.DockWidgetArea(1), mw.dockWdg3)
mw.dockWdg3.setWindowTitle("3rd dock widget")

mw.show()
app.exec_()

最佳答案

dockwidgets 将合并到主窗口的布局中,因此任何调整它们大小的尝试都将被忽略。

标准的解决方法是创建内容小部件的子类并重新实现其sizeHint:

class TreeWidget(QtGui.QTreeWidget):
def sizeHint(self):
return QtCore.QSize(150, 75)

mw.dockWdg2 = QtGui.QDockWidget(mw)
mw.content2 = TreeWidget()
mw.dockWdg2.setWidget(mw.content2)

但是,这仅在您还仔细管理其他停靠栏小部件的大小的情况下才有效。当然,最大化主窗口也会对最终结果产生影响。

您可能还想考虑使用 QMainWindow.saveStateQMainWindow.restoreState管理您的 dockwidgets 的初始状态。

关于python - 如何在没有中央小部件(PyQt4)的应用程序中设置 QDockWidget 初始(默认)大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13715365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com