一、MainWindow介绍
MainWindow提供了用于构建应用程序用户界面的框架。Qt 有 QMainWindow 及其相关的主窗口管理类。的QMainWindow拥有自己的布局,您可以添加在QToolBar,QDockWidget、QMenuBar和QStatusBar。布局有一个中心区域,可以被任何类型的小部件占据。你可以在下面看到布局的图像。
注意:窗口中菜单栏,状态栏,中心部件只能有一个,工具栏和浮动窗口可以有多个,
#include "mainwindow.h"
#include "QMenuBar"
#include "QToolBar"
#include "QPushButton"
#include "QStatusBar"
#include "QLabel"
#include "QDockWidget"
#include "QTextEdit"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
//重置窗口
this->resize(600,400);
//创建菜单栏--最多只有一个
QMenuBar * bar = menuBar();
setMenuBar(bar);
//创建菜单
QMenu * file= bar->addMenu(QString::fromLocal8Bit("文件"));
QMenu * edit= bar->addMenu(QString::fromLocal8Bit("编辑"));
//创建菜单项
QAction * newaction= file->addAction(QString::fromLocal8Bit("新建"));
//添加分隔符
file->addSeparator();
QAction * editaction = file->addAction(QString::fromLocal8Bit("打开"));
//工具栏--可以多个
QToolBar * tbar = new QToolBar(this);
addToolBar(tbar);
// tbar ->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);
//设置浮动
tbar->setFloatable(false);
//设置移动(总开关)
tbar->setMovable(false);
//工具栏添加内容
tbar->addAction(newaction);
//添加分割线
tbar->addSeparator();
tbar->addAction(editaction);
//工具栏中添加控件
QPushButton * btn= new QPushButton(tbar);
btn->setText(QString::fromLocal8Bit("工具栏上的控件" ));
tbar->addWidget(btn);
//状态栏也是最多只能有一个
QStatusBar * sta = statusBar();
setStatusBar(sta);
//放标签控件
QLabel * lb =new QLabel("leftremake",this);
sta->addWidget(lb);
//放右侧标签控件
QLabel * lb2 =new QLabel("rightremake",this);
sta->addPermanentWidget(lb2);
//铆接部件(浮动窗口)可以包含多个
QDockWidget * dw = new QDockWidget(QString::fromLocal8Bit("浮动" ),this);
addDockWidget(Qt::BottomDockWidgetArea,dw);
//设置停靠区域,只允许上下
dw->setAllowedAreas(Qt::TopDockWidgetArea|Qt::BottomDockWidgetArea);
//设置中心部件 只能有一个
QTextEdit * qedit= new QTextEdit(this);
setCentralWidget(qedit);
}
MainWindow::~MainWindow()
{
}
运行后
注意:菜单栏、工具栏、状态栏、铆接部件(浮动窗口)、qt都不会直接把他们加入窗体,
菜单栏使用 setMenuBar(bar);,
工具栏使用addToolBar(tbar);
添加分隔符都是使用addSeparator();
状态栏使用setStatusBar(sta);
浮动窗口使用 addDockWidget(Qt::BottomDockWidgetArea,dw);
另外在向工具栏中添加控件时并不是直接设置其父控件
QPushButton * btn= new QPushButton(tbar);
而是使用addWidget(btn),直接设置会把原有工具栏内容的覆盖掉出现下面这种问题