马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
在PyQt5中利用QDockWidget可以创建机动的停靠窗口,加强应用步调的多功能性。以下是具体的步调和示例代码:
根本步调
- 导入模块:确保导入须要的PyQt5模块。
- 创建主窗口:继承QMainWindow并初始化界面。
- 设置中央部件:比方QTextEdit作为主内容地区。
- 创建QDockWidget:
- 设置标题、允许停靠的地区和特性(可关闭、可移动等)。
- 添加内容部件(如QListWidget)。
- 添加停靠窗口:利用addDockWidget()将QDockWidget添加到主窗口。
- 处置惩罚多个停靠窗口:利用splitDockWidget()或tabifyDockWidget()举行布局管理。
示例代码
- import sys
- from PyQt5.QtWidgets import (QApplication, QMainWindow, QTextEdit,
- QDockWidget, QListWidget)
- from PyQt5.QtCore import Qt
- class MainWindow(QMainWindow):
- def __init__(self):
- super().__init__()
- self.initUI()
- def initUI(self):
- # 设置中心文本编辑器
- self.textEdit = QTextEdit()
- self.setCentralWidget(self.textEdit)
- # 创建左侧停靠窗口
- dockLeft = QDockWidget("工具面板", self)
- dockLeft.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
- dockLeft.setFeatures(QDockWidget.DockWidgetClosable | QDockWidget.DockWidgetMovable)
-
- # 添加列表内容
- listWidget = QListWidget()
- listWidget.addItems(["工具1", "工具2", "工具3"])
- dockLeft.setWidget(listWidget)
- self.addDockWidget(Qt.LeftDockWidgetArea, dockLeft)
- # 创建右侧停靠窗口
- dockRight = QDockWidget("属性面板", self)
- dockRight.setAllowedAreas(Qt.RightDockWidgetArea)
- dockRight.setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetClosable)
-
- # 添加属性列表
- propList = QListWidget()
- propList.addItems(["大小", "颜色", "位置"])
- dockRight.setWidget(propList)
- self.addDockWidget(Qt.RightDockWidgetArea, dockRight)
- # 设置窗口属性
- self.setWindowTitle('停靠窗口示例')
- self.setGeometry(100, 100, 1000, 600)
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- mainWin = MainWindow()
- mainWin.show()
- sys.exit(app.exec_())
复制代码 关键方法分析
- setAllowedAreas():指定允许停靠的地区(利用Qt.DockWidgetArea罗列值,如Qt.LeftDockWidgetArea)。
- setFeatures():设置停靠窗口特性,如QDockWidget.DockWidgetClosable(可关闭)、QDockWidget.DockWidgetMovable(可移动)。
- addDockWidget():将停靠窗口添加到主窗口的指定地区。
- splitDockWidget(existing, new, orientation):分割现有停靠地区来放置新窗口。
- tabifyDockWidget(first, second):将两个停靠窗口堆叠为标签页情势。
高级用法
- 规复关闭的停靠窗口:保存对QDockWidget的引用,通过setVisible(True)或重新添加。
- 信号处置惩罚:毗连dockLocationChanged等信号以相应状态厘革。
- 浮动窗口调解:覆盖floatEvent()方法处置惩罚浮动时的界面调解。
留意事项
- 确保精确导入罗列值,如Qt.LeftDockWidgetArea和QDockWidget.DockWidgetClosable。
- 利用QMainWindow的中央部件作为应用步调的焦点功能区。
- 测试差别停靠组合和浮动状态以确保界面举动符合预期。
|