可停靠窗口是主窗口的一个子窗口,可以悬浮,也可以附着在主窗口的特定位置。
QDock的函数
- setWidget():在可停靠窗口上设置任意Widget
- setSizes():设置每个控件的初始尺寸
- setFloating():如果设为true,那么dock window可悬浮
- setAllowedAreas():设置该子窗口可停靠的位置,参数有LeftDockWidgetArea、RightDockWidgetArea、TopDockWidgetArea、BottomDockWidgetArea、NoDockWidgetArea
- setFeatures():设置子窗口的特性,参数有DockWidgetClosable、DockWidgetMovable、DockWidgetFloatable、DockWidgetVerticalTitleBar、NoDockWidgetFeatures
栗子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| import sys from PyQt4.QtCore import * from PyQt4.QtGui import *
class window(QMainWindow): def __init__(self, parent=None): super(window, self).__init__(parent) self.init()
def init(self): 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 = window() ex.show() sys.exit(app.exec_())
if __name__ == '__main__': main()
|