【转】PyQt4 精彩实例分析 实例 15 停靠窗口

本实例实现停靠窗口的基本使用方法,实现的效果图如下所示。

本实例实现的停靠窗口的可实现状态已在各窗口中进行了描述,停靠窗口 1 只可在主窗口的左边和右边停靠,
停靠窗口 2 只可在浮动和在右停靠两种状态间切换,并且不可移动,停靠窗口 3 可实现停靠窗口的各个状态。
具体状态此处不再一一用图示的方式列出,读者可自行运行代码进行试验。

具体实现代码如下:

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

设置停靠窗口的一般流程为:

1)创建一个 QDockWidget 对象的停靠窗体。

2)设置此停靠窗体的属性,通常调用 setFeatures()及 setAllowedAreas()两个方法。

3)新建一个要插入停靠窗体的控件,本实例中为 QTextEdit,也可为其他控件,常用的一般为
QListWidget 和 QTextEdit。

4)把控件插入停靠窗体,调用 QDockWidget 的 setWidget()方法。

5)使用 addDockWidget()方法在 MainWindow 中加入此停靠窗体。

posted @ 2014-11-18 11:51  jakey.chen  阅读(418)  评论(0)    收藏  举报