-
QMdiArea
类
#include
用于提供多窗口文
档
(MDI)
的显示区域。继承自
QA
bstractScrollArea
类。
< br>来自
Qt
的官方说法是,
QWo
rkspace
是被废弃的类,它的存在就是为了使采用以前版本的
Qt
开发的程序能够正常运行。
所以,
如果你使用的是
Qt4.5
及以后的版本,
我们强烈建议你
使用
QMdiArea
来创建
MDI
应用程序。
1
、详细描述
在创建
MDI
应用程序时,
QMdi
Area
类的实例通常被用作主窗口的中心窗口部件,
但也可以
被放置于一个布局中。实际上,
QMdiArea
是
MDI
应用程序的窗口管理器。它建立、绘制、<
/p>
管理在它之上的子窗口,并可采用层叠或者平铺的方式排列它们。
下面的代码将一个区域的主窗口:
QMainWindow *mainWindow = new
QMainWindow;
mainWindow->setCentralWidget(mdiArea);
有别于窗口管理器的顶层窗口,
QMdiArea
支持所有窗口的标志(
QT:: WindowFlags
< br>)
,只要
标
志
< br>被
当
前
窗
口
风
格
所
支
持
。
如
果
p>
一
个
特
定
的
标
志
不
支
持
该
窗
< br>口
的
风
格
(
如
WindowShadeButtonHint
)
,你仍然可以使用
showShaded()
来隐藏窗口风格。
QMdiArea
和
QMdiSubWindow
,前者
主要用于创建程序主窗口的中心窗口部件,后者
用于创建主窗口的各个子窗口。具体的做
法是把
QMdiArea
类的实例作
为主窗口的中心部
件,把
QMdiSubWindow
类的实例作为子窗口,并由
QMdiArea
实
现对多个子窗口的管理。
QMdiSubWindow
继承自
QWidget
,它的作用是为
QMdiArea
创建子窗口。它代表了在
Q
MdiArea
中创建的顶层窗口。它主要包含一个标题栏、一个内部窗口
(Internal Widget)
、一
个窗口框
架和一个大小控制手柄。
QMdiSubWindow
有自己的
布局
(Layout),
在其中包含窗口
标题栏以及内部窗口的中心窗口区域。
QMdiArea<
/p>
是所有子窗口的容器和管理器,
QMdiArea
中的子窗口都是
QMdiSubWindow
类的实例
。我们通过
addSubWindow()
方法把它们加入到<
/p>
MDI
应用程序中。使用时,通常先
建立
一个
QWidget
或其子类的实例,然后把它作为参数调用<
/p>
addSubWindow()
函数,
a
ddSubWindow()
函
数
将<
/p>
把
它
作
为
子
窗
口
的
内
部
窗
口
,
并
填
充
中
心
窗
口
区
域
。
由
于<
/p>
QMdiSubWindow
是
QWid
get
的子类,
所以你可以像使用以前我们介绍过的常见顶层窗
口那
样
使
用
它
,
如
可
以
p>
调
用
基
类
QWidget
的
show(),
hide(),
showMaximized(),
以
及
setWindowTitle()
p>
等方法对窗口实例进行设置。
小
贴
士
:
为
QMdiSubWindow
创
< br>建
内
部
窗
口
有
两
种
方
法
,
一
种
p>
是
调
用
addSu
bWindow(widget)
,
其中
widget
参数将作为内部窗口部件;
另一种是先创建一个
继承自
QWidget
的窗口实例,
然
后调用
setWidget(QWidget*widget)
方法,
把
widget
作为子窗口的内
部窗口部件即可,这个内部窗口部件将被显示在子窗口的中心区域。注意,
QMdiArea
会对
其内部的子窗口进行管理,你
不必使用代码显式的管理它们。
新建一个子窗口类,它可派生
自
QWidget
或其子类,比如
QT
extEdit
。这个类的实例将
作为子窗口的内部窗口部件。
这个子窗口类的创建与我们前面讲到的子类化对话框和子类化
Q
Widget
的方法相同,只是它没有菜单栏、工具栏和状态栏。另外记得在主窗口的头
文件中
加入该子窗口类的声明。
注意
:
QMdiArea
默认的滚动条属性是
Qt:: ScrollBarAlwaysOff
。
2
、成员类型文档
enum QMdiArea::AreaOption
flags QMdiArea::AreaOptions
这个枚举描述选项定制
QMdiArea
的行为。
QMdiArea::DontMaximizeSubWindowOn
Activation
0x1
当活动的子窗口最大化时,<
/p>
默认的行
为是被激活的下一个子窗口也被最
大化。
如果你不希望出现此行为,
设
置这个选项。
enum
QMdiArea::ViewMode
这个枚举变量描述了区域的视图模式
;
即子窗口将被如何显示。
QMdiArea::SubWindowView
QMdiArea::TabbedView
enum
QMdiArea::WindowOrder
0
1
显示带有窗框的子窗口(默认)
只显示标签栏的子窗口
指定标准用于
返回按
subWindowList()
排序的子窗口列表。函
数
cascadeSubWindows()
和
tileSubWindows()
安排窗口时遵循这个顺序。
QMdiArea::CreationOrder
QMdiArea::StackingOrder
0
1
窗口按照其创建的顺序返回
p>
窗口按照它们被叠放的顺序返回,最顶层的窗口在
列表的最后
窗口按照其被激活的顺序返回
QMdiArea::ActivationHistoryOrder
2
3
、属性文档
activationOrder : WindowOrder
这个属性保存标准排序的子窗口列表。
此属性指定标准排序将使用在由
su
bWindowList
()返回的子窗口的列表中。默认情况下,
它是窗口创建顺序。
background :
QBrush
这个属性保存的工作区的背景。
此属性为工作区设置背景。
默认情况下,
它是一个灰
色的颜色,
但也可以是任意
(如:
颜色
,
渐变或像素映射)
。
documentMode : bool
这个属性保存的标
签栏在选项卡式视图模式是否设置为文件的模式
文档模式默认情况下禁用。
tabPosition : QTabWidget::TabPosition <
/p>
(当
viewMode
是
TabbedView
时)设置标签所在方向
此属性的可能值由
QTabWidget::
TabPosition
枚举描述
tabShape : QTabWidget::TabShape
这个属性保存在索引视图模式选项卡的形状。
(当
viewMode
是
TabbedView
时)
设置该
MdiArea
的标签形式
Q
t
提供两种选择:
Rounded(
圆
,
默认
)
和
T
riangular(
三角形
)
-
-
-
-
-
-
-
-
-
上一篇:LTE信令流程(一)上课
下一篇:让学习变得像游戏一样快乐