码迷,mamicode.com
首页 > Windows程序 > 详细

Pyqt QDockWidget 停靠窗体

时间:2015-06-05 19:40:08      阅读:270      评论:0      收藏:0      [点我收藏+]

标签:

 

网上的一个关于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

 

Pyqt QDockWidget 停靠窗体

标签:

原文地址:http://www.cnblogs.com/dcb3688/p/4555288.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!