Python Qt GUI 设计:QMdiArea 和 QMdiSubWindow 类实现多文档界面(拓展篇—3)
一个典型的 GUI 应用程序可能有多个窗口,选项卡控件和堆栈窗口控件允许一次使用其中的一个窗口。然而,很多时候这种方法不是很有用,因为其他窗口的视图是隐藏的一种同时显示多个窗口的方法是,创建多个独立的窗口,这些独立的窗口被称为 SDI(Single Document Interface,单文档界面),每个窗口都可以有自己的菜单系统、工具栏等。这需要占用较多的内存资源。MDI (Multiple Document Interface,多文档界面)应用程序占用较少的内存资源,子窗口都可以放在主窗口容器中,这个容器控件被称为 QMdiArea。QMidArea 控件通常占据在 QMainWindow 对象的中央位置,子窗口在这个区域是 QMdiSubWindow 类的实例,可以设置任何 QWidget 作为子窗口对象的内部控件,子窗口在 MDI 区域进行级联排列布局。QMdiArea 类和 QMdiSubWindow 类中的常用方法如下表所示:
通过示例,了解 QMdiArea 类和 QMdiSubWindow 类多文档界面的使用方法,效果如下所示:
示例中,主窗口 QMainWindow 拥有一个菜单控件和 MidArea 控件。当单击菜单控件时触发 triggered 信号,连接到槽函数 windowaction()。当选择菜单中的“New"动作时,会添加一个新的 MDI,每个 MDI 都有标题,在主窗口内部会增加 MDI 的数量。当选择菜单中的“cascade"和"Tiled"动作时,会在主窗口中显示子窗口的排列方式:级联显示子窗口或平铺显示子窗口。实现代码如下所示:
版权声明: 本文为 InfoQ 作者【不脱发的程序猿】的原创文章。
原文链接:【http://xie.infoq.cn/article/67937955a789a5172c0835639】。文章转载请联系作者。
评论