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_()  

效果:

Pyqt QDockWidget 停靠窗体

 

解释:

停靠窗口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

 

你可能感兴趣的:(widget)