拉升坞的小部件的顶层内容插件重新实现sizeHint:
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()
UPDATE
这里有一个简单的演示,显示实现一个方法:
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_())
谢谢你的回复。你的意思是我必须尝试重新实现** QDockWidget的内容WIDGET **? –
@炫恩金。是 - 传递给'dockwidget.setWidget()'的小部件。或者,您可以像我的回答一样创建一个简单的包装小部件,并使其成为当前内容小部件的父项。 – ekhumoro
我试过了。但是,没有任何调用sizeHint的重新实现的小部件... :( –