我喜欢停靠类比,并相信用户可能需要两个大的“中央”小部件以及顶部,底部和侧面小部件。我还喜欢将码头小部件标记为例如QDockWidget(“文件系统查看器”)。是否有一种简单,当前的方法来添加更多停靠位置而不是单个中央小部件? This thread提示它曾经可用,但现在不建议使用。如果没有,有没有办法标记中央小部件,使其看起来像码头一样?
最佳答案
您链接到的答案已经提供了一个解决方案,即将QMainWindow
设置为中央小部件。该中央窗口小部件只能具有停靠窗口小部件,而不能拥有自己的中央窗口小部件。
这种方法有一些限制。首先,中央坞站小部件不能与外部坞站小部件互换(反之亦然)。其次,如果所有外部停靠小部件都关闭,除非主窗口具有菜单栏,否则将无法还原它们。菜单栏自动提供一个上下文菜单,用于还原停靠小部件。右键单击停靠小工具标题栏时,显示的菜单与此相同。
以下是演示此方法的演示脚本:
import sys
from PySide import QtGui, QtCore
class MainWindow(QtGui.QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.centre = QtGui.QMainWindow(self)
self.centre.setWindowFlags(QtCore.Qt.Widget)
self.centre.setDockOptions(
QtGui.QMainWindow.AnimatedDocks |
QtGui.QMainWindow.AllowNestedDocks)
self.setCentralWidget(self.centre)
self.dockCentre1 = QtGui.QDockWidget(self.centre)
self.dockCentre1.setWindowTitle('Centre 1')
self.centre.addDockWidget(
QtCore.Qt.LeftDockWidgetArea, self.dockCentre1)
self.dockCentre2 = QtGui.QDockWidget(self.centre)
self.dockCentre2.setWindowTitle('Centre 2')
self.centre.addDockWidget(
QtCore.Qt.RightDockWidgetArea, self.dockCentre2)
self.dockLeft = QtGui.QDockWidget(self)
self.dockLeft.setWindowTitle('Left')
self.addDockWidget(QtCore.Qt.LeftDockWidgetArea, self.dockLeft)
self.dockRight = QtGui.QDockWidget(self)
self.dockRight.setWindowTitle('Right')
self.addDockWidget(QtCore.Qt.RightDockWidgetArea, self.dockRight)
self.menuBar().addMenu('File').addAction('Quit', self.close)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
window = MainWindow()
window.setGeometry(500, 50, 600, 400)
window.show()
sys.exit(app.exec_())
关于python - 使用PySide有更多码头位置吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46380037/