PyQt5 QDock小部件

PyQt5 QDock小部件

可停靠窗口是一个子窗口,可以保持浮动状态或附加到主窗口的指定位置。QMainWindow类的主窗口对象保留了一块区域供可停靠窗口使用。该区域位于中央窗口部件周围。

可停靠窗口可以在主窗口内移动,也可以被取消停靠并由用户移动到新的区域。这些属性由以下 QDockWidget 类的方法控制。

序号 方法和描述
1 setWidget() 在停靠窗口的区域内设置任何QWidget
2 setFloating() 如果设置为true,则停靠窗口可以浮动
3 setAllowedAreas() 设置窗口可以停靠的区域
LeftDockWidgetArea(左停靠窗口区域)
RightDockWidgetArea(右停靠窗口区域)
TopDockWidgetArea(上停靠窗口区域)
BottomDockWidgetArea(下停靠窗口区域)
NoDockWidgetArea(无停靠窗口区域)
4 setFeatures() 设置停靠窗口的功能 | DockWidgetClosable(可关闭)
DockWidgetMovable(可移动)
DockWidgetFloatable(可浮动)
DockWidgetVerticalTitleBar(垂直标题栏)
NoDockWidgetFeatures(无停靠窗口功能)

示例

在以下示例中,顶级窗口是一个QMainWindow对象。一个QTextEdit对象是其中心小部件。

self.setCentralWidget(QTextEdit())

首先创建一个可停靠的窗口。

self.items = QDockWidget("Dockable", self)

将一个QListWidget对象作为停靠窗口添加。

self.listWidget = QListWidget()
self.listWidget.addItem("item1")
self.listWidget.addItem("item2")
self.listWidget.addItem("item3")
self.items.setWidget(self.listWidget)

可停靠对象位于中央小部件的右侧。

self.addDockWidget(Qt.RightDockWidgetArea, self.items)

完整代码如下:

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class dockdemo(QMainWindow):
   def __init__(self, parent = None):
      super(dockdemo, self).__init__(parent)

      layout = QHBoxLayout()
      bar = self.menuBar()
      file = bar.addMenu("File")
      file.addAction("New")
      file.addAction("save")
      file.addAction("quit")

      self.items = QDockWidget("Dockable", self)
      self.listWidget = QListWidget()
      self.listWidget.addItem("item1")
      self.listWidget.addItem("item2")
      self.listWidget.addItem("item3")

      self.items.setWidget(self.listWidget)
      self.items.setFloating(False)
      self.setCentralWidget(QTextEdit())
      self.addDockWidget(Qt.RightDockWidgetArea, self.items)
      self.setLayout(layout)
      self.setWindowTitle("Dock demo")

def main():
   app = QApplication(sys.argv)
   ex = dockdemo()
   ex.show()
   sys.exit(app.exec_())

if __name__ == '__main__':
   main()

以上代码会产生以下输出。点击Dock图标以解除ListWidget窗口的停靠状态。双击再次停靠−

PyQt5 QDock小部件

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程