zoukankan      html  css  js  c++  java
  • QDockWidget实例

    #!/usr/bin/python
    # _*_ Coding: Utf-8 _*_
    
    '''
        QDockWidget
        funcs:
            setAllowedAreas(Qt::DockWidgetAreas areas) --- set allowed areas for dock widget
            setFeatures(DockWidgetFeatures features) --- set movable, floatable and closable
            setTitleBarWidget(QWidget *widget), setWidget(QWidget *widget) --- set title widget and content widget
            currentIndex() and currentWidget() --- return index and widget of current
        slots:
            setCurrentIndex(int index)
            setCurrentWidget(QWidget *widget)
        signals:
            featuresChanged(QDockWidget::DockWidgetFeatures features)  --- features
            dockLocationChanged(Qt::DockWidgetArea area)  --- location
            allowedAreasChanged(Qt::DockWidgetAreas allowedAreas)  --- allowed area
            topLevelChanged(bool topLevel)  --- toplevel
            visibilityChanged(bool visible)  --- visibility
        --- edit by yangrui, 2020.2.13, 6.32 PM.
    '''
    import sys
    from PyQt5.QtCore import *
    from PyQt5.QtWidgets import (QApplication, QWidget, QDockWidget, QLabel, QComboBox)
    from PyQt5.QtGui import *
    
    class MystackedWidget(QWidget):
        qss = """
                #dockWidget {
                    border: 1px solid #FA4F9B;
                }
                #label1 {
                    background: #545D4F;
                }
    
                #label2 {
                    background: #FAA45D;
                }
            """
        def __init__(self):
            super(MystackedWidget, self).__init__()
            self.initUI()
    
        def initUI(self):
            self.resize(300, 200)
            self.dockWidget = QDockWidget(self)
            self.dockWidget.setObjectName("dockWidget")
            label1 = QLabel("title bar widget")
            label1.setFixedSize(150, 20)
            label1.setObjectName("label1")
            label2 = QLabel("widget")
            label2.setFixedSize(150, 100)
            label2.setObjectName("label2")
    
    
            #self.dockWidget.setFloating(False)  # floatable
            self.dockWidget.setAllowedAreas(Qt.TopDockWidgetArea | Qt.BottomDockWidgetArea)  # Left, Right, Top, Bottom, No, All
    
            # set conbination of DockWidgetClosable, DockWidgetMovable and DockWidgetFloatable
            self.dockWidget.setFeatures(QDockWidget.DockWidgetClosable | QDockWidget.DockWidgetMovable | QDockWidget.DockWidgetFloatable)
    
            # set title bar widget and content widget
            #self.dockWidget.setTitleBarWidget(label1)
            self.dockWidget.setWidget(label2)
    
            '''
                signals
            '''
            self.dockWidget.topLevelChanged.connect(self.topLevel_handler)
            self.dockWidget.featuresChanged.connect(self.features_handler)
            self.dockWidget.allowedAreasChanged.connect(self.allowArea_handler)
            self.dockWidget.dockLocationChanged.connect(self.location_handler)
            self.dockWidget.visibilityChanged.connect(self.visibility_handler)
    
            self.setStyleSheet(self.qss)
    
        def topLevel_handler(self, isTopLevel):
            if isTopLevel:
                print("topLevel changed to " + str("true"))
            else:
                print("topLevel changed to " + str("false"))
        def features_handler(self, features):
            print("new features:", features)
        def allowArea_handler(self, allowArea):
            print("new allowed area: ", allowArea)
        def location_handler(self, area):
            print("new location: ", area)
        def visibility_handler(self, isVisible):
            if isVisible:
                print("dock widget is visible")
            else:
                print("dock widget isn't visible")
    
    if __name__ == '__main__':
        app = QApplication(sys.argv)
        form = MystackedWidget()
        form.show()
        app.exec_()
  • 相关阅读:
    java中awt和swing是的关系以及区别
    java 5.0和java6.0的区别
    bpel 经典实例入门教程
    java中指针的问题
    linux下软件的基本安装和卸载
    stomp与veil用法
    in perspective用法
    不錯的句子
    fit into用法
    ceremony用法
  • 原文地址:https://www.cnblogs.com/exploer/p/13379166.html
Copyright © 2011-2022 走看看