多文档

在使用 QMainWindow 作为主窗口时, 经常会用到多文档的方式对文件进行显示, 本例通过一个简单的例子分析如何实现多文档的布局方式。例效果图如下

Qt 提供了一个 QWorkspace 类,利用 QWorkspace 类可以很方便地实现多文档的应用。QWorkspace 类继承自 QWidget 类,因此只需在 QMainWindow 主窗口中把 QWorkspace 对象设置为中央窗体即可。QWorkspace 类提供了许多对子窗口进行排序的函数接口,如 cascade(),arrangeIcon(),title()等。

代码:

 1 #coding: utf-8
 2 from PyQt4.QtCore import *
 3 from PyQt4.QtGui 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         self.workSpace = QWorkspace()
13         #设置主窗口的中央窗体为 QWorkspace 对象,以使主窗口能实现多文档的布局方式
14         self.setCentralWidget(self.workSpace)
15
16         window1 = QMainWindow()
17         window1.setWindowTitle(self.tr("窗口1"))
18         edit1 = QTextEdit(self.tr("子窗口1"))
19         window1.setCentralWidget(edit1)
20         window2 = QMainWindow()
21         window2.setWindowTitle(self.tr("窗口2"))
22         edit2 = QTextEdit(self.tr("子窗口2"))
23         window2.setCentralWidget(edit2)
24         window3 = QMainWindow()
25         window3.setWindowTitle(self.tr("窗口3"))
26         edit3 = QTextEdit(self.tr("子窗口3"))
27         window3.setCentralWidget(edit3)
28
29         self.workSpace.addWindow(window1)
30         self.workSpace.addWindow(window2)
31         self.workSpace.addWindow(window3)
32         #createMenu()函数创建主窗口的菜单栏
33         self.createMenu()
34         self.slotScroll()
35
36     def createMenu(self):
37         layoutMenu = self.menuBar().addMenu(self.tr("布局"))
38         #现对子窗口的 arrangeIcons 布局,它的布局方式是将所有子窗口以标题栏的方式在主窗口的底部进行排列,
39         # 如下图所示。可直接把菜单的 triggered()信号与QWorkspace 对象的 arrangeIcons()方法相连。
40         #注意此排列方式,仅对已经最小化的子窗口起作用。
41         arrange = QAction(self.tr("排列图标"), self)
42         self.connect(arrange, SIGNAL("triggered()"),self.workSpace,SLOT("arrangelcons()"))
43         layoutMenu.addAction(arrange)
44         #实现子窗口的 tile 布局,tile 的意思是用子窗口把主窗口像铺瓦片或贴瓷砖一样排满,如下图所示,
45         # 可直接连接 QWorkspace 对象的 tile()函数实现
46         tile = QAction(self.tr("平铺"), self)
47         self.connect(tile, SIGNAL("triggered()"), self.workSpace, SLOT("tile()"))
48         layoutMenu.addAction(tile)
49
50         cascade = QAction(self.tr("层叠"), self)
51         self.connect(cascade, SIGNAL("triggered()"), self.workSpace, SLOT("casxade()"))
52         layoutMenu.addAction(cascade)
53
54         otherMenu = self.menuBar().addMenu(self.tr("其它"))
55         scrollAct = QAction(self.tr("滚动"), self)
56         self.connect(scrollAct, SIGNAL("triggered()"), self.slotScroll)
57         otherMenu.addAction(scrollAct)
58         otherMenu.addSeparator()
59
60         nextAct = QAction(self.tr("下一个"), self)
61         self.connect(nextAct, SIGNAL("triggered()"), self.workSpace, SLOT("activateNextWindow()"))
62         otherMenu.addAction(nextAct)
63
64         previoustAct = QAction(self.tr("上一个"), self)
65         self.connect(previoustAct, SIGNAL("triggered()"), self.workSpace, SLOT("activatePreviousWindow()"))
66         otherMenu.addAction(previoustAct)
67     #slotScroll()槽函数完成对多文档空间 QWorkspace 的滑动条进行设置
68     def slotScroll(self):
69         self.workSpace.setScrollBarsEnabled(not self.workSpace.scrollBarsEnabled())
70
71 app = QApplication(sys.argv)
72 main = MainWidget()
73 main.show()
74 app.exec_()

时间: 2024-08-03 01:21:22

多文档的相关文章

通过beego快速创建一个Restful风格API项目及API文档自动化(转)

通过beego快速创建一个Restful风格API项目及API文档自动化 本文演示如何快速(一分钟内,不写一行代码)的根据数据库及表创建一个Restful风格的API项目,及提供便于在线测试API的界面. 一.创建数据库及数据表(MySQL) #db--jeedev -- ---------------------------- -- Table structure for `app` -- ---------------------------- DROP TABLE IF EXISTS `a

[转贴]xcode帮助文档

突然间得到了一台MAC ,这时候不学OC 更待何时学呀?马上找了IOS开发的书和网上的帖子看,最近在开源力量那里看了TINYFOOL的入门讲座,讲的都很虚,可能时间不够吧,也没看到什么例子呀,什么的,很蜻蜓点水,点到即止,BUT ANYWAY,在开源IOS 入门讲座完了就突然得到了一台MAC,不知道是不是上天的安排,还是学一下OC吧,毕竟水果的支持时间是有限的,一般我估计3年后水果不再支持这款MAC,到时想学也不够条件了,我们这种吊丝真的经常被生活所迫.在网上找到一个文章教人看XOCDE的帮助文

标准文档流

标准流指的是在不使用其他的与排列和定位相关的特殊CSS规则时,各种元素的排列规则.HTML文档中的元素可以分为两大类:行内元素和块级元素.       1.行内元素不占据单独的空间,依附于块级元素,行内元素没有自己的区域.它同样是DOM树中的一个节点,在这一点上行内元素和块级元素是没有区别的.       2.块级元素总是以块的形式表现出来,并且跟同级的兄弟块依次竖直排列,左右自动伸展,直到包含它的元素的边界,在水平方向不能并排.盒子在标准流中的定位原则margin控制的是盒子与盒子之间的距离,

使用Apache POI导出Excel小结--导出XLS格式文档

使用Apache POI导出Excel小结 关于使用Apache POI导出Excel我大概会分三篇文章去写 使用Apache POI导出Excel小结--导出XLS格式文档 使用Apache POI导出Excel小结--导出XLSX格式文档 使用Apache POI导出Excel--大数量导出 导出XLS格式文档 做企业应用项目难免会有数据导出到Excel的需求,最近在使用其,并对导出Excel封装成工具类开放出来供大家参考.关于Apache POI Excel基本的概念与操作我在这里就不啰嗦

Atitit 项目文档规范化与必备文档与推荐文档列表

===========比较重要的必备文档========== 项目组名单通讯录( 包括项目组,客户沟通人等 需求文档 原型ui文档 开发计划表 项目源码与架构文档以及新结构文档 设计文档 (一般概要即可,重点模块单独详细设计) 数据库文档 注意事项 =========对开发比较重要的文档 Svn源码服务器账号密码 测试数据库账号密码信息 数据库sql脚本文件. 开发环境搭建文档 项目技术规范文档.(项目模式和产品模式有很多不同,需要单独分离) ======其他 测试说明文档 测试服务器部署账号信

Xcode文档安装

1.Xcode文档在线安装 打开Xcode,首选项 点击DownLoads下载文档 2.Xcode文档离线安装 找到备份的文档 com.apple.adc.documentation.AppleiOS8.0.iOSLibrary.docset 找到DocSets目录 /Applications/Xcode.app/Contents/Developer/Documentation/DocSets 拷贝文件到该目录 退出重新打开Xcode 如果还不行,/Users/你的用户名/Library/Dev

NetScaler/MAS/XAXD自动文档生成工具

当工程实施后,为用户提交文档一直是工程师比较繁重的工作.这组NetScaler和MAS脚本可以帮助我们自动生成文档减轻部分工作. 脚本基于powershell,利用NetScaler的Nitro RESTful API把所有的信息取出,直接生成word或者pdf版本的文档. 原脚本支持除中文外的多种欧美语言,经过我和作者CarlWebster多次的测试,NetScaler脚本终于支持了中文版的office,可以在中文的系统上直接导出文档了.可在本文下方下载附件. 同时我把NetScaler的脚本

如何用代码读取Office Online Server2016的文档的备注信息

前言 在一个项目上客户要求读取office online server 2016的对文档的备注信息,如下图: 以前思路老纠结在OOS这个在线上,总有以为这个信息存储在某个列表中,其实错了,这个备注信息其实就是word文档的备注信息,微软采用openxml开发的OOS,因此我也采用openxml读取备注信息的思路进行尝试,结果发现原来是可以的,成功效果图如下: 注意: OpenXml格式只有office2007以及以上版本才支持的格式,如果office97-2003格式的文档是二进制格式的文档,o

自写聊天室_LinuxC实现(4)——项目文档

西邮Linux兴趣小组  暑期项目 项目名称:    happychat        项目作者:      楚东方     1. 引言 1.1 项目综述 对项目进行简要介绍,并说明编写此项目的目的. 该项目为聊天室,主要为了实现聊天,文件传输,方便linux环境下的,交流与聊天. 实现功能: 1.好友管理: (1)添加好友 (2)删除好友 2.群管理 (1)创建群 (2)加群 (3)退群 (4)解散群 3.文件传送 实现了上传和下载的断点续传 4.聊天界面分屏 利用光标的移动对输入和屏幕聊天记

Hadoop配置文档

预节 在这一节中,笔者主要向大家介绍了该配置文档中,所用到的Linux命令和Linux的帮助. 终端提示信息 在Linux中,终端的每一行都有提示信息,其包含了当前终端登录的用户,当前登录的主机,当前终端所在的目录. 如:[[email protected] ~]$其格式为:[[用户名]@[hosts主机名或主机ip [当前所在路径]]$解析后可以知道,例子给的提示,实际上代表的是:当前终端登录的主机为master,所有的操作都是针对master的,登录主机的用户为frank,当前终端cd命令进