目录
一,菜单栏

MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 创建菜单栏
QMenuBar* menuBar = new QMenuBar(this);
this->setMenuBar(menuBar);
// 创建菜单
QMenu* menu1 = new QMenu("文件(&F)");
QMenu* menu2 = new QMenu("编辑(&E)");
QMenu* menu3 = new QMenu("视图(&V)");
menuBar->addMenu(menu1);
menuBar->addMenu(menu2);
menuBar->addMenu(menu3);
// 子菜单
QMenu* menuParent = new QMenu("父菜单");
QMenu* menuChild = new QMenu("子菜单");
menuBar->addMenu(menuParent);
menuParent->addMenu(menuChild);
// 分割线
menuBar->addSeparator();
// 创建菜单项
QAction* action1 = new QAction("新建");
QAction* action2 = new QAction("打开");
QAction* action3 = new QAction("保存");
QAction* action4 = new QAction("另存为");
QAction* action5 = new QAction("退出");
menu1->addAction(action1);
menu1->addAction(action2);
menu1->addAction(action3);
menu1->addAction(action4);
menu1->addAction(action5);
// 给action添加信号
connect(action1,&QAction::triggered,this,&MainWindow::handle1);
connect(action2,&QAction::triggered,this,&MainWindow::handle2);
connect(action3,&QAction::triggered,this,&MainWindow::handle3);
connect(action4,&QAction::triggered,this,&MainWindow::handle4);
connect(action5,&QAction::triggered,this,&MainWindow::close);
}
二,工具栏

// 菜单项放到工具栏
QToolBar* toolbar1 = new QToolBar();
QToolBar* toolbar2 = new QToolBar();
toolBar->addAction(action1);
toolBar->addAction(action2);
// 只能放左侧或者右侧
toolbar2->setAllowedAreas(Qt::LeftToolBarArea | Qt::RightToolBarArea);
// 不能浮动
toolbar2->setFloatable(false);
// 不能移动
toolbar2->setMovable(false);
三,状态栏

// 创建状态栏
QStatusBar* statusBar = this->statusBar();
this->setStatusBar(statusBar);
// 显示临时消息
//statusBar->showMessage("这是一个状态消息", 3000);
// 给状态栏中添加子控件
QLabel* label = new QLabel("这是一个QLabel");
statusBar->addWidget(label);
// 给状态栏添加进度条
QProgressBar* progressBar = new QProgressBar();
progressBar->setRange(0,100);
progressBar->setValue(50);
statusBar->addWidget(progressBar);
// 给状态栏设置按钮
QPushButton* button = new QPushButton("按钮");
statusBar->addPermanentWidget(button);
四,浮动窗口

// 给主窗口加子窗口
QDockWidget* dockWidget = new QDockWidget();
this->addDockWidget(Qt::LeftDockWidgetArea,dockWidget);
// 浮动窗口也可以设置标题
dockWidget->setWindowTitle("这是浮动窗口");
// 给浮动窗口内部添加控件
QWidget* container = new QWidget();
dockWidget->setWidget(container);
// 创建布局管理器,把布局管理器设置到QWidget中
QVBoxLayout* layout = new QVBoxLayout;
container->setLayout(layout);
// 创建其他控件添加到layout中
QLabel* label2 = new QLabel("这是个按钮");
QPushButton* buttuon = new QPushButton("这是按钮");
layout->addWidget(label);
layout->addWidget(button);
// 设置浮动窗口允许停靠的位置
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::TopDockWidgetArea);
五,对话框

void QDialog::on_pushButton_clicked()
{
QDialog* dialog = new QDialog(this);
dialog->setWindowTitle("这是一个对话框");
// 设置对话框的尺寸
dialog->resize(600,600);
// 通过 show 方法就可以显示对话框
dialog->show();
// delete dialog;
// 正确做法应该是把 delete 和关闭按钮的点击信号关联起来
// 在用户去点击关闭的时候,触发 delete
// Qt 为了让咱们写的方便,直接给 QDialog 设置了一个属性
// 可以通过设置属性,完成上述效果
dialog->setAttribute(Qt::WA_DeleteOnClose);
}