一、前言
Qt提供QDockWidget停靠窗口控件来实现浮动窗口的功能,QDockWidget停靠窗口控件一般使用在QMainWindow中,它是放置在QMainWindow中的中央窗口小部件周围的停靠窗口小部件区域中的次要窗口。
二、学习目标
1.QDockWidget常用方法
2.QDockWidget常用信号
3.QDockWidget组件的应用
三、知识点
1.【QDockWidget常用方法】
-
QMainWindow提供了一系列函数来管理和操控QDockWidget
方法 描述 addDockWidget(area,dockwidget) 添加一个给定的停靠窗口到指定区域 splitDockWidget(after,dockwidget,orientation) 把两个dock进行左右或上下并排布置,做成一个类似QSplitter的功能 tabifyDockWidget(first,second) 移动第二个停靠窗口到第一个停靠窗口,可以在主窗口中生成一个标签样式的停靠窗口 tabifiedDockWidgets(dockwidget) 返回和指定停靠窗口形成标签样式的停靠窗口列表 removeDockWidget(dockwidget) 从主窗口布局中移除停靠窗口,并隐藏它,注意,停靠窗口并不会被删除 restoreDockWidget(dockwidget) 恢复停靠窗口的状态 dockWidgetArea(dockwidget) 返回指定停靠窗口的停靠区域,返回值为Qt. DockWidgetArea的相关取值 resizeDocks(docks,sizes,orientation) 改变指定停靠窗口列表的尺寸 setDockNestingEnabled(enabled) 设置停靠窗口是否可以嵌套 isDockNestingEnabled() 返回停靠窗口是否有可嵌套的特性 setDockOptions(options) 设置停靠窗口的停靠属性,取值见QMainWindow. DockOption:
AnimatedDocks: 动画方式停靠;
AllowNestedDocks: 允许嵌套;
AllowTabbedDocks: 允许标签页方式停靠;
ForceTabbedDocks: 强制标签页方式停靠;
VerticalTabs: 垂直标签页方式;
GroupedDragging: 允许成组拖动标签页停靠窗口。dockOptions() 获得停靠窗口的停靠属性 -
QDockWidget常用方法
方法 描述 setWidget(widget) 在Dock窗口区域设置QWidget setFloating(floating) 设置Dock窗口是否可以浮动,如果设置为True,则表示可以浮动 setTitleBarWidget(widget) 设置停靠窗口标题栏部件 setAllowedAreas(areas) 设置窗口可以停靠的Qt. DockWidgetArea区域:
LeftDockWidgetArea: 窗口可在左侧停靠;
RightDockWidgetArea: 窗口可在右侧停靠;
TopDockWidgetArea: 窗口可在顶端停靠;
BottomDockWidgetArea: 窗口可在底端停靠;
AllDockWidgetArea: 窗口可在任意方向停靠;
NoDockWidgetArea: 只可停靠在插入处。setFeatures(features) 设置停靠窗口的功能属性:
DockWidgetClosable: 允许关闭,在一些系统上会显示一个关闭按钮;
DockWidgetMovable: 允许在Dock之间移动;
DockWidgetFloatable: 允许作为一个独立窗口浮动;
DockWidgetVerticalTitleBar: 在Dock左侧显示一个垂直标题栏;
AllDockWidgetFeatures:具有前三种属性的所有功能;
NoDockWidgetFeatures: 无具体特性设置,无法关闭、移动或者浮动。features() 返回停靠窗口的特性设置 isFloating() 返回停靠窗口的可浮动属性 allowedAreas() 返回停靠窗口允许停靠的区域 titleBarWidget() 返回停靠窗口标题栏部件
2.【QDockWidget常用信号】
信号 | 描述 |
---|---|
allowedAreasChanged(allowedAreas) | 停靠窗口的允许停靠区域发生了改变时,发射该信号 |
dockLocationChanged(area) | 停靠窗口的位置发生了改变时,发射该信号 |
featuresChanged(features) | 停靠窗口的特性发生了改变时,发射该信号 |
topLevelChanged(topLevel) | 停靠窗口的浮动属性发生了改变时,发射该信号 |
visibilityChanged(visible) | 停靠窗口的可视属性(显示/隐藏)发生改变时,发射该信号 |
3.【QDockWidget组件的应用】
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QMainWindow, QDockWidget, QTextEdit, QPushButton
class QmyMainWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent) # 调用父类的构造函数,创建QWidget窗体
self.setupUi()
def setupUi(self):
"""页面初始化"""
# 设置窗体大小及标题
self.resize(500, 400)
self.setWindowTitle("QDockWidget组件示例")
self.setCentralWidget(QTextEdit()) # QMainWindow中央区域设置文本编辑组件
# QDockWidget组件定义
self.dockWidget = QDockWidget("浮动窗口") # 定义一个QDockWidget组件
self.button = QPushButton("Button") # 定义一个按钮组件
# QDockWidget组件设置
self.dockWidget.setWidget(self.button) # 将按钮组件添加到浮动窗体上
self.dockWidget.setFloating(False) # 设置dockWidget组件不浮动
# QDockWidget绑定信号
self.dockWidget.dockLocationChanged.connect(self.on_dockWidget_dockLocationChanged)
# 将dockWidget组件添加到窗体
self.addDockWidget(Qt.RightDockWidgetArea, self.dockWidget) # QMainWindow设置停靠区域
def on_dockWidget_dockLocationChanged(self, area):
"""位置改变触发槽函数"""
print("浮动窗口的位置改编为:{}".format(area))
if __name__ == '__main__':
app = QApplication(sys.argv)
myMain = QmyMainWindow()
myMain.show()
sys.exit(app.exec_())
标签:27,窗口,self,PyQt5,QDockWidget,停靠,dockWidget,组件
From: https://www.cnblogs.com/ckxingchen/p/17054894.html