多文档界面QMdiArea

当使用多文档界面功能时,我们是将QMdiArea作为主窗口的中央部件,然后在这个中央部件中,我们可以同时打开很多个子窗口QMdiSubWindow

样式:

 1 import sys
 2 from PyQt5.QtGui import QIcon
 3 from PyQt5.QtWidgets import QApplication, QMainWindow, QMdiArea, QMdiSubWindow, QAction, QTextEdit
 4
 5
 6 class Demo(QMainWindow):#继承QMainWindow
 7     def __init__(self):
 8         super(Demo, self).__init__()
 9         self.mdi_area = QMdiArea(self)  # 实例化一个多文档窗口
10         self.setCentralWidget(self.mdi_area)  #把多文档窗口设置为主窗口的中央控件
11
12         self.toolbar = self.addToolBar(‘Tool Bar‘)
13
14         self.new_action = QAction(‘新建‘, self)
15         self.close_action = QAction(‘关闭‘, self)
16         self.close_all_action = QAction(‘全关闭‘, self)
17         self.mode1_action = QAction(‘层叠‘, self)
18         self.mode2_action = QAction(‘平铺‘, self)
19
20         self.new_action.triggered.connect(self.new_func)
21         self.close_action.triggered.connect(self.mdi_area.closeActiveSubWindow)
22         #self.mdi_area.closeActiveSubWindow   关闭当前激活的窗口
23
24         self.close_all_action.triggered.connect(self.mdi_area.closeAllSubWindows)
25         #self.mdi_area.closeAllSubWindows    关闭所有子窗口
26
27         self.mode1_action.triggered.connect(self.mdi_area.cascadeSubWindows)
28         #self.mdi_area.cascadeSubWindows   层叠布局子窗口
29
30         self.mode2_action.triggered.connect(self.mdi_area.tileSubWindows)
31         #self.mdi_area.tileSubWindows   平铺布局子窗口
32
33         self.toolbar.addAction(self.new_action)
34         self.toolbar.addAction(self.close_action)
35         self.toolbar.addAction(self.close_all_action)
36         self.toolbar.addAction(self.mode1_action)
37         self.toolbar.addAction(self.mode2_action)
38
39     def new_func(self):
40         text = QTextEdit()
41         sub = QMdiSubWindow()  #实例化一个子窗口
42         sub.setWidget(text)   #设置子窗口的控件
43         self.mdi_area.addSubWindow(sub)  #在多文档窗口中添加子窗口
44         sub.show()  #显示子窗口
45
46
47 if __name__ == ‘__main__‘:
48     app = QApplication(sys.argv)
49     demo = Demo()
50     demo.show()
51     sys.exit(app.exec_())

原文地址:https://www.cnblogs.com/liming19680104/p/10394804.html

时间: 2024-11-09 16:01:02

多文档界面QMdiArea的相关文章

Qt多文档界面应用设计

使用Qt编写多文档界面(MDI)应用相当方便,主要会使用到QMdiArea和QMdiSubWindow两个类.可以查看Qt Asistant中这两个类的说明文档,里面介绍的相当详细.另外,可以搜索例程"Mdi Example",这是提供的一个示例程序,这是一个多文档编辑器,代码很详细,只是缺少注释,不过很简单,应该容易看懂.接下来,我在这里介绍最简单.最精华的部分. 1 QMdiArea 这个类相当于一个MDI窗口管理器,用来管理添加到这个区域中的多个子窗口.我们在应用中新建的所有子窗

设计一个多文档界面(MDI)应用程序,可以实现打开、排列和关闭子窗口。

首先 :我们要知道什么是多文档界面(MDI) 理论上说是"在多文档窗口环境下进行开发设计的,这种多文档界面称为多文档界面(mdi)" 通俗 的一点,我们最常见到的Excel表格就是mdi [我个人理解的图是这样的] 开始实际操作: 1.打开2个窗体[Form2为主窗体,Form2_son为子窗体] 2.在主窗体Form2中拖拉控件 MenuStrip(菜单栏) 设置form2的IsMdiContainer=True 3.在子窗体Form2_son中拖拉控件 RichTextBox  (

多文档界面的实现(DotNetBar的superTabControl)

private void FormMain_Load(object sender, EventArgs e) { superTabControl2.Tabs.Clear(); timer1.Start(); buttonX1_Click(null, null); } /// <summary> /// 创建或者显示一个多文档界面 /// </summary> /// <param name="caption">窗体标题</param> /

【Windows编程】系列第十一篇:多文档界面框架

前面我们所举的例子中都是单文档界面框架,也就是说这个窗口里面的客户区就是一个文档界面,可以编写程序在里面输入或者绘制文本和图形输出,但是不能有出现多个文档的情况.比如下面的UltraEdit就是一个典型的多文档界面,他可以同时编辑多个文档,每个文档还可以最大化,最小化等等,我们今天就来看看多文档的基本框架是怎么实现的. 多文档界面的框架创建需要几下几步. 主框架窗口创建 主框架窗的创建跟普通的窗口没有什么区别,就是自己注册一个类并用该类创建一个重叠窗口,这个可以用CreateWindow/Cre

第19章 多文档界面

19.1 概述——MDI层次结构 ①框架窗口 A.本身是一个普通的主窗口,其客户区被特殊的窗口覆盖,并不直接显示程序的输出.其客户区也被称为“工作区” B.默认的消息处理函数是DefFrameProc,而不是DefWindowProc. ②客户窗口: A.系统预定义的窗口类,类名“MDICLIENT”,负责各个MDI子窗口的管理. B.窗口过程系统己经预先注册,用户程序不需要窗口过程. ③文档窗口:也称为子窗口,用于显示一个文档. 19.2 窗口的建立 (1)框架窗口:先注册一个MDI框架窗口类

DotNetBar创建的Ribbon、标签式多文档界面

1.创建一个form作为主窗体,继承自:DevComponents.DotNetBar.RibbonForm 设置属性:IsMdiContainer为true 2.创建一个form,作为子窗体,也继承自:DevComponents.DotNetBar.RibbonForm,插入一个richtext控件,dock=fill 3.主窗体插入一个DevComponents.DotNetBar.TabStrip,作为控制各个子窗体的标签显示器 设置属性: CloseButtonOnTabsVisible

C# Winfrom MDI(多文档界面)

1.首先设置父级Form1界面,只需要将该界面的IsMdiContainer属性设置为true: 2.设置按钮的事件来打开子级的窗口Form2,Form3等等: 3.在From1内设置一个容器panel,范围为需要打开的子级界面的大小: 4.设置Form2.Form3的事件,以及唯一窗口等: //Form2的点击事件 private void form2ToolStripMenuItem_Click(object sender, EventArgs e) { Form2 f2 = new For

C#学习笔记——MDI窗体(多文档界面)

1.设置父窗体: 如果要将某个窗体设置为父窗体,只需将该窗体的IsMdiContainer属性设置为True即可. 2.设置子窗体: 通过设为某个窗体的MdiParent属性来确定该窗体是那个窗体的子窗体. 语法如下: 1: public Form MdiParent{get;set;} 3.排列MDI子窗体: 语法如下: 1: public void LayoutMdi(MdiLayout value) value:是MdiLayout的枚举值之一,用来定义MDI子窗体的布局. 枚举成员 说明

MDI多文档界面管理

本次目标是建立一个Form主窗体,并在该主窗体中建立菜单,通过菜单打开其余的子窗体. Form1图片: 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using Sy