- PyQt 教程
- PyQt - 首页
- PyQt - 简介
- PyQt - 环境配置
- PyQt - Hello World
- PyQt - 主要类
- PyQt - 使用 Qt Designer
- PyQt - 元对象
- PyQt 信号与槽
- PyQt - 信号和槽
- PyQt - 支持和信号
- PyQt - 未绑定和已绑定信号
- PyQt - 使用 PyQtSignal 创建新信号
- PyQt - 连接、断开和发射信号
- PyQt - 槽装饰器
- PyQt - 槽连接
- PyQt 布局
- PyQt - 布局管理
- PyQt - QBoxLayout
- PyQt - QGridLayout
- PyQt - QFormLayout
- PyQt - QHBoxLayout
- PyQt - QVBoxLayout
- PyQt - QStackedLayout
- PyQt - QGraphicsGridLayout
- PyQt - QGraphicsAnchorLayout
- PyQt - QGraphicsLayout
- PyQt - QGraphicsLinearLayout
- PyQt 基本窗口部件
- PyQt - 基本窗口部件
- PyQt - QLabel 窗口部件
- PyQt - QLineEdit 窗口部件
- PyQt - QPushButton 窗口部件
- PyQt - QRadioButton 窗口部件
- PyQt - QCheckBox 窗口部件
- PyQt - QComboBox 窗口部件
- PyQt - QSpinBox 窗口部件
- PyQt - QMessageBox
- PyQt - QDialogButtonBox 窗口部件
- PyQt - QFontComboBox 窗口部件
- PyQt - QDoubleSpinBox 窗口部件
- PyQt - QToolBox 窗口部件
- PyQt - QDialog 类
- PyQt - QMessageBox
- PyQt - 多文档界面
- PyQt - 拖放
- PyQt 绘图 API
- PyQt - 绘图 API
- PyQt 数据库
- PyQt - 数据库处理
- PyQt 基础知识
- PyQt - BrushStyle 常量
- PyQt - QClipboard
- PyQt - QPixmap 类
- PyQt 有用资源
- PyQt - 快速指南
- PyQt - 有用资源
- PyQt - 讨论
PyQt - 可停靠窗口部件 (QDockWidget)
可停靠窗口是一个子窗口,可以保持浮动状态,也可以附加到主窗口的指定位置。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 PyQt4.QtCore import *
from PyQt4.QtGui 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()
以上代码产生以下输出:
广告