📅  最后修改于: 2023-12-03 15:33:53.173000             🧑  作者: Mango
在 PyQt5 中,QDockWidget 是用于创建可停靠在主窗口边缘的小窗口的类。当 QDockWidget 的顶部窗口部件发生更改时,可以通过 topLevelChanged
信号进行通知。
dockWidget.topLevelChanged.connect(self.function_name)
function_name
:当顶级更改时要调用的函数。import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QAction, QDockWidget, QTextEdit
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建菜单栏
menu_bar = self.menuBar()
file_menu = menu_bar.addMenu('File')
edit_menu = menu_bar.addMenu('Edit')
# 创建操作
new_action = QAction('New', self)
new_action.setShortcut('Ctrl+N')
open_action = QAction('Open', self)
open_action.setShortcut('Ctrl+O')
save_action = QAction('Save', self)
save_action.setShortcut('Ctrl+S')
exit_action = QAction('Exit', self)
exit_action.setShortcut('Ctrl+Q')
file_menu.addAction(new_action)
file_menu.addAction(open_action)
file_menu.addAction(save_action)
file_menu.addAction(exit_action)
# 创建可停靠的小窗口
dock_widget = QDockWidget('Dock', self)
dock_widget.setAllowedAreas(Qt.LeftDockWidgetArea | Qt.RightDockWidgetArea)
# 创建文本编辑器窗口部件并将其添加到可停靠的小窗口中
text_edit = QTextEdit()
dock_widget.setWidget(text_edit)
# 添加可停靠的小窗口到主窗口
self.addDockWidget(Qt.RightDockWidgetArea, dock_widget)
# 连接顶层更改信号到函数
dock_widget.topLevelChanged.connect(self.toplevel_changed)
self.setGeometry(100, 100, 800, 600)
self.setWindowTitle('QDockWidget Example')
self.show()
def toplevel_changed(self, event):
if event:
print('Dock moved to a floating window')
else:
print('Dock moved back to the main window')
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
sys.exit(app.exec_())
在此示例中,创建了一个可停靠的小窗口,并连接其 topLevelChanged
信号到 toplevel_changed
函数。当小窗口从主窗口移动到浮动窗口时,将会输出 'Dock moved to a floating window'
,当小窗口从浮动窗口移动回主窗口时,将会输出 'Dock moved back to the main window'
。
以上就是 PyQt5 QDockWidget 的顶级更改信号的介绍和使用示例。