zoukankan      html  css  js  c++  java
  • Pyqt QDockWidget 停靠窗体

    网上的一个关于QDockWidget 停靠窗体的教程

    代码:

     1 # -*- coding: utf-8 -*-   
     2 from PyQt4.QtGui import *  
     3 from PyQt4.QtCore import *  
     4 import sys  
     5   
     6 QTextCodec.setCodecForTr(QTextCodec.codecForName("utf8"))  
     7   
     8 class MainWidget(QMainWindow):  
     9     def __init__(self,parent=None):  
    10         super(MainWidget,self).__init__(parent)  
    11         self.setWindowTitle(self.tr("依靠窗口"))  
    12   
    13         te=QTextEdit(self.tr("主窗口"))  
    14         te.setAlignment(Qt.AlignCenter)  
    15         self.setCentralWidget(te)  
    16   
    17         #停靠窗口1   
    18         dock1=QDockWidget(self.tr("停靠窗口1"),self)     
    19         dock1.setFeatures(QDockWidget.DockWidgetMovable)  
    20         dock1.setAllowedAreas(Qt.LeftDockWidgetArea|Qt.RightDockWidgetArea)  
    21         te1=QTextEdit(self.tr("窗口1,可在Main Window的左部和右部停靠,不可浮动,不可关闭"))  
    22         dock1.setWidget(te1)  
    23         self.addDockWidget(Qt.RightDockWidgetArea,dock1)  
    24   
    25         #停靠窗口2   
    26         dock2=QDockWidget(self.tr("停靠窗口2"),self)  
    27         dock2.setFeatures(QDockWidget.DockWidgetFloatable|QDockWidget.DockWidgetClosable)  
    28         te2=QTextEdit(self.tr("窗口2,只可浮动"))  
    29         dock2.setWidget(te2)  
    30         self.addDockWidget(Qt.RightDockWidgetArea,dock2)  
    31         
    32         #停靠窗口4  
    33         dock4=QDockWidget(self.tr("停靠窗口4"),self)  
    34         dock4.setFeatures(QDockWidget.DockWidgetFloatable|QDockWidget.DockWidgetClosable)  
    35         widget4 = QWidget()   # 可引入外部Qwidget
    36         dock4.setWidget(widget4)  
    37         self.addDockWidget(Qt.RightDockWidgetArea,dock4)  
    38         
    39         self.tabifyDockWidget(dock2, dock4)  
    40         dock2.raise_() 
    41   
    42         #停靠窗口3   
    43         dock3=QDockWidget(self.tr("停靠窗口3"),self)  
    44         dock3.setFeatures(QDockWidget.AllDockWidgetFeatures)  
    45         te3=QTextEdit(self.tr("窗口3,可在Main Window任意位置停靠,可浮动,可关闭"))  
    46         dock3.setWidget(te3)  
    47         self.addDockWidget(Qt.BottomDockWidgetArea,dock3)  
    48 if __name__ == '__main__':                   
    49     app=QApplication(sys.argv)  
    50     main=MainWidget()  
    51     main.show()  
    52     app.exec_()  

    效果:

    解释:

    停靠窗口1只可在主窗口的左边和右边停靠,停靠窗口2只可在浮动和在右停靠两种状态间切换,并且不可移动,停靠窗口3可实现停靠窗口的各个状态, 停靠窗口4和窗口2叠加

    实例化一个dock title 为标题 self 为parent 因为QDockWidget 不添加到布局管理器中 所以我们需要传一个parent 给他

    dock1=QDockWidget(self.tr("停靠窗口1"),self)    

    设置dock是否可以关闭拉出等    #参数还有 QDockWidget.DockWidgetClosable 可以关闭 DockWidgetMovable 可以移动

    dock1.setFeatures(QDockWidget.DockWidgetMovable)

    设置dock只能在左边 或者右边显示    #allowedareas 有Qt.LeftDockWidgetArea Qt.RightDockWidgetArea Qt.TopDockWidgetArea Qt.BottomDockWidgetArea Qt.AllDockWidgetAreas

    dock1.setAllowedAreas(Qt.LeftDockWidgetArea|Qt.RightDockWidgetArea)

    添加一个label控件

    dock1.setWidget(te1)  

    添加dock到主窗口第一个参数为显示位置

    self.addDockWidget(Qt.RightDockWidgetArea,dock1)

    两个停靠窗口叠加

    self.tabifyDockWidget(dock2, dock4) 

    默认dock2为首标签

    dock2.raise_()

    更多链接: http://www.linuxidc.com/Linux/2012-06/63652p15.htm

  • 相关阅读:
    C#线程同步(1)- 临界区&Lock
    详细解析Java中抽象类和接口的区别
    防止重复提交的几种办法
    网页中实现JSON的编辑与显示
    xcode5 ios7升级后的一系列问题解决
    hadoop-2.0.0-mr1-cdh4.2.0源码编译总结
    hadoop-2.0.0-cdh4.2.1源码编译总结
    cocos2d-iphone加入芒果广告
    hadoop2.0 eclipse 源码编译
    HBase学习笔记
  • 原文地址:https://www.cnblogs.com/dcb3688/p/4555288.html
Copyright © 2011-2022 走看看