PyQt5 - QDock 小部件
可停靠窗口是一个子窗口,它可以保持浮动状态,也可以附加到主窗口的指定位置。 QMainWindow 类的主窗口对象有一个为可停靠窗口保留的区域。 该区域位于中央小部件周围。
停靠窗口可以在主窗口内移动,也可以取消停靠以由用户移动到新区域。 这些属性由以下 QDockWidget 类方法控制 −
序号 | 方法 & 说明 | |||||
---|---|---|---|---|---|---|
1 |
setWidget() 设置停靠窗口区域中的任何 QWidget |
|||||
2 |
setFloating() 如果设置为 true,停靠窗口可以浮动 |
|||||
3 |
setAllowedAreas() 设置窗口可以停靠的区域
|
|||||
4 |
setFeatures() 设置停靠窗口的功能
|
示例
在下面的例子中,顶层窗口是一个 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 窗口。 双击再次停靠 −