📜  PyQt5 QDockWidget - 顶级更改信号(1)

📅  最后修改于: 2023-12-03 15:33:53.173000             🧑  作者: Mango

PyQt5 QDockWidget - 顶级更改信号

在 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 的顶级更改信号的介绍和使用示例。