QT添加菜单栏-工具栏-中心区域-状态栏-dock 示范
主窗口框架拥有自己的布局,包括以下组件:
①菜单栏
菜单栏包含了一个下拉菜单项的列表,这些菜单项通过QAction动作类实现。一个主窗口只能有一个菜单栏。
②工具栏
工具栏一般用于显示常用的菜单项,也可插入其他窗口部件,一个主窗口可以拥有多个工具栏。
③中心部件
主窗口中心区域可以放入一个窗口部件作为中心部件,是应用程序的主要功能实现区域,一个主窗口只能有一个中心部件。
④dock部件
Dock部件又称停靠部件,或停靠窗口,可停靠在窗口部件的四周,用来设置一些部件来实现一些功能,类似一个工具箱,一个主窗口可拥有多个Dock部件。
⑤状态栏
状态栏用于显示程序的一些状态信息,在主窗口的最底下,一个主窗口只能拥有一个状态栏。

代码添加方法:
构造函数里面添加:
- QMenu *edit_menu=ui->menubar->addMenu(tr("编译(&E)"));//添加编辑菜单
- QAction *action_open=edit_menu->addAction(QIcon(":/new/prefix1/flower1.png"),tr("打开文件(&O)")); //添加带图标的菜单栏,代码方式设置带图标的菜单
- action_open->setShortcut(QKeySequence("Ctrl+O"));//设置快捷键
- ui->main_toolBar->addAction(action_open);//在工具栏添加动作--主窗口->右键->添加工具栏。点一下榔头的图标(构建按钮)输入ui->后才会显示tool bar,main_toolBar是在属性对象名位置修改的
- // ui->toolBar->addAction(action_open);
-
- QActionGroup *group = new QActionGroup(this);
- QAction *action_L= group->addAction(tr("左对齐(&L)"));
- action_L->setCheckable(true);
- QAction *action_R= group->addAction(tr("右对齐(&R)"));
- action_R->setCheckable(true);
- QAction *action_C = group->addAction(tr("居中(&C)"));
- action_C->setCheckable(true);
- action_L->setChecked(true);
- edit_menu->addSeparator();//添加分隔线
- edit_menu->addAction(action_L);//action_L,action_R,action_C, 左中有设置的group,功能类似于radio button,实现三个中只有一个可以选中
- edit_menu->addAction(action_R);
- edit_menu->addAction(action_C);
或者界面直接添加:

菜单添加图标:
Action编辑器中双击某个菜单项。

提前添加图片的方法:
主窗口,右键,选择添加工具栏。
构造函数继续添加代码
- QMenu *edit_menu=ui->menubar->addMenu(tr("编译(&E)"));//添加编辑菜单
- QAction *action_open=edit_menu->addAction(QIcon(":/new/prefix1/flower1.png"),tr("打开文件(&O)")); //添加带图标的菜单栏,代码方式设置带图标的菜单
- action_open->setShortcut(QKeySequence("Ctrl+O"));//设置快捷键
工具栏里面添加 tool button类型的菜单
- QToolButton *tool_btn=new QToolButton(this);
- tool_btn->setText(tr("颜色"));
- QMenu *color_menu=new QMenu(this);
- color_menu->addAction(tr("红色"));
- color_menu->addAction(tr("绿色"));
- tool_btn->setMenu(color_menu);
- tool_btn->setPopupMode(QToolButton::MenuButtonPopup);//设置弹出模式
- ui->main_toolBar->addWidget(tool_btn);
- QSpinBox *spinBox=new QSpinBox(this);//添加旋转框
- ui->main_toolBar->addWidget(spinBox);

工具箱:Containers->MDI Area拖入主窗口
然后再Action编辑器中,右键某一个菜单项


添加代码:
- QMessageBox::information(this,"tips","添加多文档界面",QMessageBox::Ok);
- //添加多文档区域
- //新建文本编辑器部件
- QTextEdit *text_edit=new QTextEdit(this);
- //使用QMidArea类的addSubWindow函数创建子窗口,以文本编辑器为中心部件
- //MDI(Multiple Document Interface)多文档界面
- QMdiSubWindow *mdi_window=ui->mdiArea->addSubWindow(text_edit);
- mdi_window->setWindowTitle(tr("这是一个多文档编辑器的子窗口"));
- mdi_window->show();
再构造函数里面添加代码实现状态显示信息:
- //ui->statusbar->showMessage(tr("状态栏的显示信息2"),2000);//临时显示2秒,就消失
- //创建标签,设置标签样式并显示信息,然后将其以永久部件的形式添加到状态栏
- QLabel *label_permanent = new QLabel(this);
- label_permanent->setFrameStyle(QFrame::Box|QFrame::Sunken);
- label_permanent->setText("txwtech@163.com");
- ui->statusbar->addPermanentWidget(label_permanent);
- ui->statusbar->showMessage(tr("状态栏的显示信息1"),0);//一直显示
工具箱:Containers->Dock Widget拖入主窗口
然后再按钮或者其他部件到dock里面
然后再Action编辑器中,右键某一个菜单项-右键-转到槽,实现显示dock
ui->dockWidget->show();