QMdiArea类
- subWindowList():此方法返回MDI区域中所有子窗口的列表。返回的列表按通过WindowOrder()函数设置的顺序排列
- WindowOrder:这个静态变量设置子窗口列表的排序条件。以下是可以分配给此静态变量的有效值:
- creation order:窗口按创建顺序返回。这是默认顺序
- StackingOrder:按窗口的堆叠顺序返回窗口,最上面的窗口位于列表的最后
- ActivationHistoryOrder:窗口按激活顺序返回
- activateNextSubWindow():此方法将焦点设置为子窗口列表中的下一个窗口。当前窗口顺序决定下一个要激活的窗口。
- activatePreviousSubWindow():此方法将焦点设置为子窗口列表中的上一个窗口。当前窗口顺序确定要激活的上一个窗口。
- cascadeSubWindows():此方法以层叠方式排列子窗口。
- tileSubWindows():此方法以平铺方式排列子窗口。
- closeAllSubWindows():此方法关闭所有子窗口
- setViewMode():此方法设置MDI区域的视图模式。子窗口可以在两种模式下查看:子窗口视图(SubWindow View)和选项卡视图(Tabbed View):
- SubWindow View:此方法显示带有窗口框架的子窗口(默认)。如果以平铺方式排列,则可以看到多个子窗口的内容。它也由一个常量0表示。
- Tabbed View:在选项卡栏中显示带有选项卡的子窗口。一次只能看到一个子窗口内容的内容。它也由一个常量1表示
实例
- 创建基于Main Window模板的应用窗口
- 拖入一个MDI Area部件
- 右键选择”添加子窗口“
- 再添加一个子窗口
- 在子窗口分别添加Label部件,设定其text为First subwwindow和Second subwindow
- 在主菜单添加Windows
- 在Windows下添加 SubWindow View,Tabbed View,Cascade View,Tile View
- 保存为demoMDI.ui
- 保存后使用pyuic生成demoMDI.py
- 创建callMDI.py,代码如下
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication,QAction,QFileDialog
from cookbook_200502.demoMDI import *
class MyForm(QMainWindow):
def __init__(self):
super().__init__()
self.ui=Ui_MainWindow()
self.ui.setupUi(self)
self.ui.mdiArea.addSubWindow(self.ui.subwindow)
self.ui.mdiArea.addSubWindow(self.ui.subwindow_2)
self.ui.actionSubWindow_View.triggered.connect(self.SubWindow_View)
self.ui.actionTabbed_View.triggered.connect(self.Tabbed_View)
self.ui.actionCascade_View.triggered.connect(self.cascadeArrange)
self.ui.actionTile_View.triggered.connect(self.tileArrange)
self.show()
def SubWindow_View(self):
self.ui.mdiArea.setViewMode(0)
def Tabbed_View(self):
self.ui.mdiArea.setViewMode(1)
def cascadeArrange(self):
self.ui.mdiArea.cascadeSubWindows()
def tileArrange(self):
self.ui.mdiArea.tileSubWindows()
if __name__=="__main__":
app=QApplication(sys.argv)
w=MyForm()
w.show()
sys.exit(app.exec())