GUI应用程序都有一个主窗口,虽然前面讲到的QWidget组件也可以定义生成主窗口,但是Qt还定义了一个专门用于实现主窗口的类QMainWindow。为什么?跟QDialog一样的道理,主窗口具有许多主窗口特有的元素组件,为了程序的复用性,Qt在QWidget的基础上“特例化”了一个QMainWindow。
GUI程序是由一个主窗口和多个对话框组成,主窗口是与用户进行长时间交互的窗口,是程序启动后显示的第一个窗口,程序的绝大多数功能是直接由主窗口提供,辅助功能由对话框提供。
QMainWindow是Qt中主窗口的基类:
显然,QMainWindow是一种容器类型的组件。
QMainWindow封装了主窗口常用的菜单栏组件、工具栏组件、中心组件组件、停靠栏组件和状态栏组件。对于程序员来讲对这些概念再熟悉不过了。Qt是面向对象的GUI开发平台,所以上述封装在MainWindow中的组件自然也是以类的形式存在:
1. 菜单栏组件QMenuBar
1.1 下拉菜单项组QMenu
1.2 菜单项QAction
2. 工具栏组件QToolBar
2.1 快捷项QAction
3. 状态栏组件QStatusBar
3.1 任意组件QWidget
1. 菜单栏组件
新建基类为QMainWindow的Qt Gui应用程序:
//main.cpp
#include <QtGui/QApplication>
#include "MainWindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}
//MianWindow.h
#include <QtGui/QMainWindow>
#include <QKeySequence>
#include <QMenuBar>
#include <QMenu>
#include <QAction>
class MainWindow :