首先,QMainWindow是一个为用户提供主窗口程序的类,包含一个菜单栏(Menu Bar)、工具栏(Tool Bar)、多个铆接部件(dock widgets)、状态栏(status Bar)、中央窗口(center Widgets)。
**
**
菜单栏
在QMainWindow中,菜单栏Menu bar只能有一个,比如说下面图中红线画出来的部分,这样的菜单栏在一个项目中只有一个。
//创建菜单栏
QMenuBar* bar = menuBar();
//将菜单栏放到创建中
setMenuBar(bar);
需要注意的是,在创建菜单栏的时候不需要自己指明父类(父亲是谁),因为 menuBar()
会默认的吧QMainWindow类作为自己的父类。然后再通过setMenuBar(bar)
将其设为菜单栏。
虽然菜单栏只可以由一个,但是菜单栏中可以创建多个菜单,同时每个菜单中可以由多个菜单项
//创建菜单
QMenu* fileMenu = bar->addMenu("文件");
QMenu* editMenu = bar->addMenu("编辑");
//创建菜单项
fileMenu->addAction("新建");
//添加分隔符
fileMenu->addSeparator();
fileMenu->addAction("打开");
工具栏
在QMainWindow中,工具栏可以有多个,如下面画红线区域。工具栏的使用和创建和QPushButton很像,需要自己指定父类。
同时工具栏可以设定停靠区域,设置哪些区域可停哪些等等
同时工具栏中也可以添加内容,也可以将按钮当做内容添加进去。
//工具栏 可以有多个
QToolBar * toolbar = new QToolBar(this);//和QPUshButton一样,没有系统方法
addToolBar(Qt::LeftToolBarArea,toolbar);
//设置工具栏的停靠范围
toolbar->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
//设置浮动的操作
toolbar->setFloatable(false);
//设置移动的总开关
toolbar->setMovable(false);
//工具栏中添加内容
toolbar->addAction("open");
toolbar->addSeparator();
toolbar->addAction("close");
//工具栏中还可以添加按钮
QPushButton* btn = new QPushButton("test",this);
toolbar->addWidget(btn);
状态栏
QMainWindow中,状态栏只能有一个,用于表示项目此时的状态等等。下图话红线的一整片都是状态栏。状态栏中也可以添加一些内容等。
//状态栏 最多有一个
QStatusBar* stbar = statusBar();
//设置到窗口中
setStatusBar(stbar);
//放标签空间
QLabel *label = new QLabel("标签",this);
stbar->addWidget(label);
铆接部件
在QMainWindow中,铆接部件可以有多个,其实铆接部件就相当于浮动窗口。具体例子我没想到,有知道的大佬可以在评论区讲下。
//铆接部件 (浮动窗口) 可以有多个
QDockWidget* dock = new QDockWidget("铆接1",this);
//dock->setAllowedAreas(Qt::BottomDockWidgetArea);
dock->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);
中心部件
QMainWindow中中心部件只有一个,中心只有一个嘛。就像下图中,写代码的区域。
//设置中心部件 只能有一个
QTextEdit* text = new QTextEdit(this);
setCentralWidget(text);