Qt应用程序之Application Main Window详解
【主窗口类概览】
下面的类提供了创建典型现代主窗口应用程序的所有事物,例如:主窗口自身,菜单以及工具栏,状态栏等等。
【主窗口类】
Qt 提供了下面的类用于管理主窗口以及与用户界面关联的组件:
*QmainWindow是构建应用程序主要的类。与接下来的QDockWidget和QToolBar类相比,它代表了应用程序顶级的用户界面。
*QDockWidget提供了用于创建工具面板或者是帮助窗口的组件。Dock widgets保持自己的属性,可以移动,关闭或者是作为外部 窗口浮动。
*QtoolBar提供了通用的工具栏部件,可以保持几个跟动作相关的部件,例如:按钮,菜单等等。它可以与菜单以及键盘很好的合 作。
【示例代码】
使用QMainWindow是最直接的方式。一般情况下,我们都会继承自QMainWindow并且在其构造函数中设置菜单,工具栏和菜单栏以及dock widgets部件。
将菜单添加到主窗口中十分简单,只需要创建菜单,将菜单添加到主窗口的菜单栏上。注意,在第一次调用QMainWindow::menuBar()函数在第一次被调用的时候就会创建菜单栏。你也可以调用QMainWindow::setMenuBar()设置自定义的菜单栏。

一旦动作被创建,我们就可以将他们添加到主窗口部件上,首先我们将他们添加到菜单上:
QtoolBar和QMenu类使用了Qt的action系统来提供一致的API。在上面的代码中,我们使用QMenu::addAction()函数将已经存在的actions添加到file菜单中。QToolBar也提供了这个函数,这使得我们可以在主窗口的不同地方重用actions。这就避免了一些不必要的重复的劳动。
我们创建了主创口的工具栏,并且将期望的动作添加上去:在这个示例中,工具栏被限制在主窗口的顶部和底部,并且初始化是放置在主创口的顶部工具栏的。我们可以看到newAct和openAct同时显示在工具栏和file菜单上。
QDockWidget通常以类似QToolBar的方式使用。我们创建一个dockwidget作为主创口的子窗口部件,并且为dock widget添加它自己的子窗口部件。

在这个示例中,dock widget仅仅可以被放置在左边和右边的dock区域,并且初始是放置在左边的dock区域。
QMainWindow API允许程序员将dock widget放置在四个角落的dockwidget区域。如果需要,我们可以使用 QMainWindown::setCorner()函数改变默认情况。

下面的图显示了上面代码展示的配置过程。注意,左边和右边的dockarea包括顶部和底部的拐角。
一旦主窗口的所有组件都被设置起来了,那么我们可以如下创建主窗口并且安装它。中心部件可以是QWidget的任何子类。