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

 

转载于:https://www.cnblogs.com/dcb3688/p/4555288.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值