文章目录
前言
在现代软件开发中,用户界面的设计对于提升用户体验至关重要。Qt框架作为功能强大的跨平台开发工具,提供了丰富的组件和工具来帮助开发者构建复杂的应用程序。本文将深入探讨Qt中的主窗口(QMainWindow
)及其菜单栏(QMenuBar
)的创建和使用,包括菜单栏的创建、菜单项的添加、快捷键的设置、子菜单的嵌套、分割线的使用以及图标的添加。此外,文章还将讨论内存泄漏问题,以及如何在Qt中避免这类问题,确保应用程序的稳定性和性能。
前面学习的所有代码,都是基于 QWidget
(控件),QWidget
更多的是作为别的窗口的一个部分。
1. 什么是Main Window?
QMainWindow
是⼀个为用户提供主窗口程序的类,继承自 QWidget
类,并且提供了⼀个预定义的布局。QMainWindow
包含 ⼀个菜单栏(menu bar)、多个工具栏(tool bars)、多个浮动窗口(铆接部件)(dock widgets)、⼀个状态栏(status bar) 和⼀个中心部件(central widget),它是许多应用程序的基础,如文本编辑器,图片编辑器等。如下图为 QMainwindow
中 各组件所处的位置:
-
菜单栏(Menu Bar):
Qt 中的菜单栏是通过QMenuBar
这个类来实现的。⼀个主窗口最多只有⼀个菜单栏。位于主窗口顶部、主窗口标题栏下面。
-
工具栏(Tool Bar Area):
工具具栏是应用程序中集成各种功能实现快捷键使用的⼀个区域。可以有多个,也可以没有,它并不是应用程序中必须存在的组件。它是⼀个可移动的组件,它的元素可以是各种窗口组件,它的元素通常以图标按钮的方式存在。如下图为工具栏的示意图:
-
铆接部件/子窗口(Dock Widget Area)
一个主窗口往往可以是由多个子窗口所构成的。
-
中央控件(Central Widget)
窗口最核心的部分
-
状态栏(Status Bar)
用于显示一些信息供用户去参考。
2. 详细了解一下其中的 菜单栏:
Qt 中的菜单栏是通过 QMenuBar
这个类来实现的。⼀个主窗口最多只有⼀个菜单栏。位于主窗口顶部、主窗口标题栏下面。
菜单栏中包含菜单. 菜单中包含菜单项。
一个主窗口最多只有一个菜单栏,工具栏,本质上就是菜单中的一些选项的“快捷方式”
QAction
动作
2.1. 创建菜单栏
“在这里输入” 可以在这里添加菜单了
菜单栏(
QMenuBar
) -> 菜单(QMenu
) -> 菜单项(QAction
)
由于当前每个菜单都是空着的,点上去没反应,添加后有反应。
使用代码去创建菜单结构:
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
// 1.先创建一个菜单栏
QMenuBar* menuBar = new QMenuBar();
this->setMenuBar(menuBar);
// 2. 创建菜单
QMenu* menu1 = new QMenu("文件");
QMenu* menu2 = new QMenu("编辑");
QMenu* menu3 = new QMenu("视图");
menuBar->addMenu(menu1);
menuBar->addMenu(menu2);
menuBar->addMenu(menu3);
// 3. 给菜单添加菜单项
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);
}
MainWindow::~MainWindow()
{
delete ui;
}