Qt中QDockWidget的利用方式

[复制链接]
发表于 2025-10-27 10:41:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在PyQt5中利用QDockWidget可以创建机动的停靠窗口,加强应用步调的多功能性。以下是具体的步调和示例代码:

根本步调


  • 导入模块:确保导入须要的PyQt5模块。
  • 创建主窗口:继承QMainWindow并初始化界面。
  • 设置中央部件:比方QTextEdit作为主内容地区。
  • 创建QDockWidget:

    • 设置标题、允许停靠的地区和特性(可关闭、可移动等)。
    • 添加内容部件(如QListWidget)。

  • 添加停靠窗口:利用addDockWidget()将QDockWidget添加到主窗口。
  • 处置惩罚多个停靠窗口:利用splitDockWidget()或tabifyDockWidget()举行布局管理。
示例代码
  1. import sys
  2. from PyQt5.QtWidgets import (QApplication, QMainWindow, QTextEdit,
  3.                              QDockWidget, QListWidget)
  4. from PyQt5.QtCore import Qt
  5. class MainWindow(QMainWindow):
  6.     def __init__(self):
  7.         super().__init__()
  8.         self.initUI()
  9.     def initUI(self):
  10.         # 设置中心文本编辑器
  11.         self.textEdit = QTextEdit()
  12.         self.setCentralWidget(self.textEdit)
  13.         # 创建左侧停靠窗口
  14.         dockLeft = QDockWidget("工具面板", self)
  15.         dockLeft.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
  16.         dockLeft.setFeatures(QDockWidget.DockWidgetClosable | QDockWidget.DockWidgetMovable)
  17.         
  18.         # 添加列表内容
  19.         listWidget = QListWidget()
  20.         listWidget.addItems(["工具1", "工具2", "工具3"])
  21.         dockLeft.setWidget(listWidget)
  22.         self.addDockWidget(Qt.LeftDockWidgetArea, dockLeft)
  23.         # 创建右侧停靠窗口
  24.         dockRight = QDockWidget("属性面板", self)
  25.         dockRight.setAllowedAreas(Qt.RightDockWidgetArea)
  26.         dockRight.setFeatures(QDockWidget.DockWidgetFloatable | QDockWidget.DockWidgetClosable)
  27.         
  28.         # 添加属性列表
  29.         propList = QListWidget()
  30.         propList.addItems(["大小", "颜色", "位置"])
  31.         dockRight.setWidget(propList)
  32.         self.addDockWidget(Qt.RightDockWidgetArea, dockRight)
  33.         # 设置窗口属性
  34.         self.setWindowTitle('停靠窗口示例')
  35.         self.setGeometry(100, 100, 1000, 600)
  36. if __name__ == '__main__':
  37.     app = QApplication(sys.argv)
  38.     mainWin = MainWindow()
  39.     mainWin.show()
  40.     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的中央部件作为应用步调的焦点功能区。
  • 测试差别停靠组合和浮动状态以确保界面举动符合预期。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表