gpt4 book ai didi

python - pyqt : resize qdockwidget in maya

转载 作者:行者123 更新时间:2023-11-30 23:31:41 31 4
gpt4 key购买 nike

QDockWidget in standalone QDockWidget in Maya

我为 Maya 制作了一个工具。我在 QMainWindow 中使用 QDockWidget 来实现整个 UI 组合。正如你和我所知,我可以“saveState”和“restoreState”来保留QToolBar、QDockWidget等。

我不知道原因,但在 Maya 中我无法“恢复状态”实际状态。它可以恢复QToolBar、QDockWidget的所有状态,除了QDockWidget的大小之外。所以我想尝试以编程方式调整 QDockWidget 的大小。有什么办法可以做到吗?

最佳答案

尝试重新实现 sizeHint对于dock-widget的顶级内容小部件:

class MyWidget(QtGui.QWidget):
_sizehint = None

def setSizeHint(self, width, height):
self._sizehint = QtCore.QSize(width, height)

def sizeHint(self):
if self._sizehint is not None:
return self._sizehint
return super(MyWidget, self).sizeHint()

更新

这是一个简单的演示,展示了实现此目的的一种方法:

from PyQt4 import QtGui, QtCore

class DockContents(QtGui.QWidget):
_sizehint = None

def setSizeHint(self, width, height):
self._sizehint = QtCore.QSize(width, height)

def sizeHint(self):
print('sizeHint:', self._sizehint)
if self._sizehint is not None:
return self._sizehint
return super(MyWidget, self).sizeHint()

class Window(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)

self.setCentralWidget(QtGui.QTextEdit(self))

self.dock = QtGui.QDockWidget('Tool Widget', self)
self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dock)

contents = DockContents(self)
contents.setSizeHint(400, 100)
layout = QtGui.QVBoxLayout(contents)
layout.setContentsMargins(0, 0, 0, 0)
self.toolwidget = QtGui.QListWidget(self)
layout.addWidget(self.toolwidget)

self.dock.setWidget(contents)

if __name__ == '__main__':

import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.setGeometry(500, 300, 600, 400)
window.show()
sys.exit(app.exec_())

关于python - pyqt : resize qdockwidget in maya,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19760583/

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