• [PyQt]QDockWidget使用介绍


    QDockWidget是一个可以停靠在QMainWindow内的窗口控件,它可以保持浮动状态或在指定位置作为子窗口附加到主窗口中。其常用方法有:
    setWidget(),用于设置在DockWidget内显示的QWidget及其子类对象。
    setFloating(),设置DockWidget是否可以浮动,参数为True或False。
    setAllowedArea(),设置可以停靠的区域,可用参数为Qt.DockWidgetAreas{LeftDockWidgetArea, RightDockWidgetArea, TopDockWidgetArea, BottomDockWidgetArea, AllDockWidgetAreas, NoDockWidgetArea}。
    setFeatures(),设置停靠窗口的功能属性(有些属性决定了显示哪些按钮),可用参数为QDockWidget.DockWidgetFeatures{DockWidgetClosable, DockWidgetMovable, DockWidgetFloatable, DockWidgetVerticalTitleBar, AllDockWidgetFeatures, NoDockWidgetFeatures}。
    其常用信号有:
    topLevelChanged(bool topLevel):当浮动状态变化时发生,参数为True时为浮动状态。
    void visibilityChanged(bool visible):当显示状态变化时发生(一般是在以Tab方式显示时使用),参数为True时可见。

    QMainWindow类中包含了有关DockWidget的一些函数方法,主要有:
    addDockWidget(Qt.DockWidgetArea area, QDockWidget dockwidget),将DockWidget添加到主窗口,第一个参数为停靠位置,第二个参数为要添加的DockWidget。
    setDockOptions(),设置停靠属性,参数类型为QMainWindow.DockOptions { AnimatedDocks, AllowNestedDocks, AllowTabbedDocks, ForceTabbedDocks, VerticalTabs, GroupedDragging }
    setTabPosition(Qt.DockWidgetAreas areas, QTabWidget.TabPosition position),设置停靠和标题位置,第一个参数为停靠位置,第二个参数为标题位置,取值范围QtabWidget.TabPosition { North, South, West, East }。
    tabifyDockWidget(QDockWidget first, QDockWidget second),以Tab方式显示DockWidget,其中第二个窗体排在第一个之后。
    setTabShape(QTabWidget.TabShape shape),设置Tab标签样式,取值范围QTabWidget.TabShape { Rounded, Triangular }。

    #导入Qt相关模块
    from PyQt5.QtWidgets import QApplication, QMainWindow, QDockWidget, QTextEdit
    from PyQt5.QtCore import Qt
    
    #导入sys模块
    import sys
    
    #创建QApplication
    app = QApplication(sys.argv)
    
    #创建并设置MainWindow
    main = QMainWindow()
    main.setWindowTitle("DockWidget示例")
    main.setCentralWidget(QTextEdit())
    main.resize(640, 480)
    
    #添加菜单
    menu = main.menuBar()
    file = menu.addMenu("&File")
    file.addAction("&New")
    file.addAction("&Open")
    file.addAction("&Save")
    
    #创建Dock1,利用setStyleSheet更改样式
    dock1 = QDockWidget("Dock1")
    dock1.setWidget(QTextEdit())
    dock1.setStyleSheet(
        """
        /*设置边框和图标*/
        QDockWidget {
            border: 1px solid lightgray;
            //titlebar-close-icon: url(close.png);
            //titlebar-normal-icon: url(undock.png);
        }
        /*设置标题栏样式*/
        QDockWidget::title {
            text-align: left center; 
            background: lightgray;
            padding-left: 5px;
        }
        /*设置按钮样式*/
        QDockWidget::close-button, QDockWidget::float-button {
            border: 1px solid transparent;
            background: darkgray;
            padding: 0px;
        }
        /*鼠标在其上移动时按钮样式*/
        QDockWidget::close-button:hover, QDockWidget::float-button:hover {
            background: red;
        }
        /*按钮按下时样式*/
        QDockWidget::close-button:pressed, QDockWidget::float-button:pressed {
            padding: 1px -1px -1px 1px;
        }
        """
        )
    
    #创建Dock2,使用setFeatures函数设置只显示关闭按钮
    dock2 = QDockWidget("Dock2")
    dock2.setWidget(QTextEdit())
    dock2.setFeatures(QDockWidget.DockWidgetClosable)
    
    #创建Dock3,使用setFeatures函数设置竖向标题栏
    dock3 = QDockWidget("Dock3", main)
    dock3.setWidget(QTextEdit())
    dock3.setFeatures(QDockWidget.DockWidgetVerticalTitleBar)
    
    #添加到主窗体
    main.addDockWidget(Qt.LeftDockWidgetArea, dock1)
    main.addDockWidget(Qt.LeftDockWidgetArea, dock2)
    main.addDockWidget(Qt.LeftDockWidgetArea, dock3)
    
    #使用Tab方式显示DockWidgets
    main.tabifyDockWidget(dock1, dock2)
    main.tabifyDockWidget(dock2, dock3)
    
    #显示主窗体
    main.show()
    
    #进入循环,直到主窗体关闭
    sys.exit(app.exec())
    
  • 相关阅读:
    微信公众号接口配置
    OFBIZ:启动之ContainerLoader
    OFBIZ:启动之StartupLoader
    Capture a Screen Shot
    在 Windows 上安装Rabbit MQ 指南
    Quartz.NET管理周期性任务
    使用Topshelf创建Windows服务
    Redirecting Console.WriteLine() to Textbox
    Greenplum 备忘
    CockroachDB 备忘
  • 原文地址:https://www.cnblogs.com/syh6324/p/9670598.html
Copyright © 2020-2023  润新知