您好,欢迎访问三七文档
QMdiArea类#includeQMdiArea用于提供多窗口文档(MDI)的显示区域。继承自QAbstractScrollArea类。来自Qt的官方说法是,QWorkspace是被废弃的类,它的存在就是为了使采用以前版本的Qt开发的程序能够正常运行。所以,如果你使用的是Qt4.5及以后的版本,我们强烈建议你使用QMdiArea来创建MDI应用程序。1、详细描述在创建MDI应用程序时,QMdiArea类的实例通常被用作主窗口的中心窗口部件,但也可以被放置于一个布局中。实际上,QMdiArea是MDI应用程序的窗口管理器。它建立、绘制、管理在它之上的子窗口,并可采用层叠或者平铺的方式排列它们。下面的代码将一个区域的主窗口:QMainWindow*mainWindow=newQMainWindow;mainWindow-setCentralWidget(mdiArea);有别于窗口管理器的顶层窗口,QMdiArea支持所有窗口的标志(QT::WindowFlags),只要标志被当前窗口风格所支持。如果一个特定的标志不支持该窗口的风格(如WindowShadeButtonHint),你仍然可以使用showShaded()来隐藏窗口风格。QMdiArea和QMdiSubWindow,前者主要用于创建程序主窗口的中心窗口部件,后者用于创建主窗口的各个子窗口。具体的做法是把QMdiArea类的实例作为主窗口的中心部件,把QMdiSubWindow类的实例作为子窗口,并由QMdiArea实现对多个子窗口的管理。QMdiSubWindow继承自QWidget,它的作用是为QMdiArea创建子窗口。它代表了在QMdiArea中创建的顶层窗口。它主要包含一个标题栏、一个内部窗口(InternalWidget)、一个窗口框架和一个大小控制手柄。QMdiSubWindow有自己的布局(Layout),在其中包含窗口标题栏以及内部窗口的中心窗口区域。QMdiArea是所有子窗口的容器和管理器,QMdiArea中的子窗口都是QMdiSubWindow类的实例。我们通过addSubWindow()方法把它们加入到MDI应用程序中。使用时,通常先建立一个QWidget或其子类的实例,然后把它作为参数调用addSubWindow()函数,addSubWindow()函数将把它作为子窗口的内部窗口,并填充中心窗口区域。由于QMdiSubWindow是QWidget的子类,所以你可以像使用以前我们介绍过的常见顶层窗口那样使用它,如可以调用基类QWidget的show(),hide(),showMaximized(),以及setWindowTitle()等方法对窗口实例进行设置。小贴士:为QMdiSubWindow创建内部窗口有两种方法,一种是调用addSubWindow(widget),其中widget参数将作为内部窗口部件;另一种是先创建一个继承自QWidget的窗口实例,然后调用setWidget(QWidget*widget)方法,把widget作为子窗口的内部窗口部件即可,这个内部窗口部件将被显示在子窗口的中心区域。注意,QMdiArea会对其内部的子窗口进行管理,你不必使用代码显式的管理它们。新建一个子窗口类,它可派生自QWidget或其子类,比如QTextEdit。这个类的实例将作为子窗口的内部窗口部件。这个子窗口类的创建与我们前面讲到的子类化对话框和子类化QWidget的方法相同,只是它没有菜单栏、工具栏和状态栏。另外记得在主窗口的头文件中加入该子窗口类的声明。注意:QMdiArea默认的滚动条属性是Qt::ScrollBarAlwaysOff。2、成员类型文档enumQMdiArea::AreaOptionflagsQMdiArea::AreaOptions这个枚举描述选项定制QMdiArea的行为。QMdiArea::DontMaximizeSubWindowOnActivation0x1当活动的子窗口最大化时,默认的行为是被激活的下一个子窗口也被最大化。如果你不希望出现此行为,设置这个选项。enumQMdiArea::ViewMode这个枚举变量描述了区域的视图模式;即子窗口将被如何显示。QMdiArea::SubWindowView0显示带有窗框的子窗口(默认)QMdiArea::TabbedView1只显示标签栏的子窗口enumQMdiArea::WindowOrder指定标准用于返回按subWindowList()排序的子窗口列表。函数cascadeSubWindows()和tileSubWindows()安排窗口时遵循这个顺序。QMdiArea::CreationOrder0窗口按照其创建的顺序返回QMdiArea::StackingOrder1窗口按照它们被叠放的顺序返回,最顶层的窗口在列表的最后QMdiArea::ActivationHistoryOrder2窗口按照其被激活的顺序返回3、属性文档activationOrder:WindowOrder这个属性保存标准排序的子窗口列表。此属性指定标准排序将使用在由subWindowList()返回的子窗口的列表中。默认情况下,它是窗口创建顺序。background:QBrush这个属性保存的工作区的背景。此属性为工作区设置背景。默认情况下,它是一个灰色的颜色,但也可以是任意(如:颜色,渐变或像素映射)。documentMode:bool这个属性保存的标签栏在选项卡式视图模式是否设置为文件的模式文档模式默认情况下禁用。tabPosition:QTabWidget::TabPosition(当viewMode是TabbedView时)设置标签所在方向此属性的可能值由QTabWidget::TabPosition枚举描述tabShape:QTabWidget::TabShape这个属性保存在索引视图模式选项卡的形状。(当viewMode是TabbedView时)设置该MdiArea的标签形式Qt提供两种选择:Rounded(圆,默认)和Triangular(三角形)tabsClosable:bool这个属性保存签视图模式下每个选项卡上的标签栏是否应该被关闭。标签是不关闭的默认。tabsMovable:bool这个属性保存的是用户是否可以在标签视图模式下TabBar区中移动的标签。标签是不可移动的默认。viewMode:ViewMode这个属性保存在QMdiArea下的子窗口显示的方式。默认情况下,SubWindowView是用来显示子窗口。4、成员函数文档QMdiArea::QMdiArea(QWidget*parent=0)构造一个父对象为parent的MdiAreaQMdiArea::~QMdiArea()析构多文档窗口(MDI)voidQMdiArea::activateNextSubWindow()[slot]激活下一个窗口voidQMdiArea::activatePreviousSubWindow()[slot]激活上一个窗口QMdiSubWindow*QMdiArea::activeSubWindow()const返回当前活动子窗口,如果当前没有活动子窗口,则返回0QMdiSubWindow*QMdiArea::addSubWindow(QWidget*widget,Qt::WindowFlagswindowFlags=0)添加一个新的子窗口部件//internalWidget1和internalWidget2为创建的widget子窗口QMdiAreamdiArea;QMdiSubWindow*subWindow1=newQMdiSubWindow;subWindow1-setWidget(internalWidget1);subWindow1-setAttribute(Qt::WA_DeleteOnClose);mdiArea.addSubWindow(subWindow1);QMdiSubWindow*subWindow2=mdiArea.addSubWindow(internalWidget2);voidQMdiArea::cascadeSubWindows()[slot]子窗口以层叠模式来放置voidQMdiArea::childEvent(QChildEvent*childEvent)[virtualprotected]这个事件处理器在子类中可以被重新实现来接收子对象事件。当子对象被插入或移除,子对象事件被发送给对象。voidQMdiArea::closeActiveSubWindow()[slot]关闭当前活动子窗口voidQMdiArea::closeAllSubWindows()[slot]关闭所有的子窗口QMdiSubWindow*QMdiArea::currentSubWindow()const返回当前活动的子窗口,如果当前没有自窗口,则返回0boolQMdiArea::event(QEvent*event)[virtualprotected]这个虚函数会接收到一个对象的事件并且应该在event被识别和处理时返回真。boolQMdiArea::eventFilter(QObject*object,QEvent*event)[virtualprotected]如果这个对象已经被安装为object对象的一个事件过滤器,就过滤事件。在这个函数你的重新实现中,如果你想过滤出e事件,比如,停止它的进一步处理,返回真,否则返回假。QSizeQMdiArea::minimumSizeHint()const[virtual]返回这个多文档窗口部件的建议最小大小。voidQMdiArea::paintEvent(QPaintEvent*paintEvent)[virtualprotected]这个事件处理器可以在子类中被重新实现来接收绘制事件。voidQMdiArea::removeSubWindow(QWidget*widget)删除widget,widget必须是该MdiArea的子部件voidQMdiArea::resizeEvent(QResizeEvent*resizeEvent)[virtualprotected]这个事件处理器可以在子类中被重新实现来接收多文档窗口部件重定义大小事件。当resizeEvent()被调用时,这个多文档窗口部件已经有了新的几何形状。原来的大小可以通过QResizeEvent::oldSize()访问。这个多文档窗口部件竟被擦除并且在处理重定义大小事件之后立即接收到一个绘制事件。在这个处理器中不需要(或者必须)绘制。voidQMdiArea::scrollContentsBy(intdx,intdy)[virtualprotected]移动水平和垂直滑轮dx和dy。voidQMdiArea::setActiveSubWindow(QMdiSubWindow*window)[slot]设置子窗口window为当前活动子窗口voidQMdiArea::setOption(AreaOptionoption,boolon=true)如果是真的,则MDI区内的option使能;否则将被禁用。见AreaOption每个option的效果。voidQMdiArea::setupViewport(QWidget*viewport)[protectedslot]重新实现这个函数在QMdiArea的子类来初始化新视口之前使用它。voidQMdiArea::showEvent(QShowEvent*showEvent)[virtualprotected]这个事件处理器可以在子类中被重新实现来接收多文档工作区部件显示事件。QSizeQMdiArea::sizeHint()const[virtual]返回建议的多文档工作区大小voidQMdiArea::subWindowActivated(QMdiSubWindow*window
本文标题:QMdiArea
链接地址:https://www.777doc.com/doc-6886774 .html