目录
- Qt 中 QMainWindow 的概述与实现 
- 1.1 组件概述 
- 1.1.1 菜单栏 (QMenuBar)
 - 1.1.2 工具栏 (QToolBar)
 - 1.1.3 状态栏 (QStatusBar)
 - 1.1.4 停靠部件 (QDockWidget)
 - 1.1.5 中心控件
 
 
 - 1.1 组件概述 
 - 实现 
- 2.1 创建项目
 - 2.2 编写代码
 - 2.3 运行程序
 
 - 总结
 
Qt 中 QMainWindow 的概述与实现
概述
在 Qt 中,QMainWindow 是一种常用的主窗口类型,它提供了一个标准的主窗口界面,支持菜单栏、工具栏、状态栏和中心控件。通过 QMainWindow,开发者可以迅速构建功能丰富的桌面应用程序。本文将详细介绍如何在 QMainWindow 中使用这些组件,并提供代码示例以供参考。
组件概述
-  
菜单栏 (QMenuBar):
- 菜单栏用于组织各种命令和设置,通常位于窗口的顶部。
 - 通过 
menuBar()方法访问,并使用addMenu()和addAction()方法添加菜单和操作。 
示例代码:
QMenu *fileMenu = menuBar()->addMenu("File"); fileMenu->addAction("Open"); fileMenu->addAction("Save"); fileMenu->addAction("Exit", this, &QWidget::close); -  
工具栏 (QToolBar):
- 工具栏为快速访问常用功能的按钮,通常位于菜单栏下方。
 - 通过 
addToolBar()方法添加,并使用addAction()方法添加按钮。 
示例代码:
QToolBar *toolBar = addToolBar("Main Toolbar"); toolBar->addAction("Open"); toolBar->addAction("Save"); toolBar->addAction("Exit"); -  
状态栏 (QStatusBar):
- 状态栏用于显示应用程序的状态信息,通常位于窗口底部。
 - 通过 
statusBar()方法访问,使用showMessage()显示信息。 
示例代码:
statusBar()->showMessage("Ready"); // 初始状态信息 -  
停靠部件 (QDockWidget):
- 停靠部件用于创建可以停靠或浮动的窗口,通常用于工具面板。
 - 使用 
QDockWidget类创建,并通过setWidget()和addDockWidget()添加到主窗口。 
示例代码:
QDockWidget *dockWidget = new QDockWidget("Dockable", this); QTextEdit *dockTextEdit = new QTextEdit(dockWidget); dockWidget->setWidget(dockTextEdit); addDockWidget(Qt::LeftDockWidgetArea, dockWidget); -  
中心控件:
- 中心控件是主窗口中的主要内容区域,通常用于显示应用程序的主要内容。
 - 使用 
setCentralWidget()方法配置。 
示例代码:
QTextEdit *textEdit = new QTextEdit(this); setCentralWidget(textEdit); 
实现
下面是一个使用 Qt 创建简单 QMainWindow 的示例代码,包含所有上述组件。
代码示例
1. 创建项目
首先,使用 Qt Creator 创建一个新的 Qt Widgets Application 项目。
2. 编写代码
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QMainWindow>
#include <QDockWidget>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QMainWindow {Q_OBJECTpublic:explicit Widget(QWidget *parent = nullptr);~Widget();private:Ui::Widget *ui;
};#endif // WIDGET_H
 
widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include <QMenuBar>
#include <QToolBar>
#include <QStatusBar>
#include <QDockWidget>
#include <QTextEdit>Widget::Widget(QWidget *parent): QMainWindow(parent), ui(new Ui::Widget)
{ui->setupUi(this);// 设置中心控件QTextEdit *textEdit = new QTextEdit(this);setCentralWidget(textEdit);// 创建菜单栏QMenu *fileMenu = menuBar()->addMenu("File");fileMenu->addAction("Open");fileMenu->addAction("Save");fileMenu->addAction("Exit", this, &QWidget::close);// 创建工具栏QToolBar *toolBar = addToolBar("Main Toolbar");toolBar->addAction("Open");toolBar->addAction("Save");toolBar->addAction("Exit");// 创建状态栏statusBar()->showMessage("Ready"); // 初始状态信息// 创建停靠部件QDockWidget *dockWidget = new QDockWidget("Dockable", this);QTextEdit *dockTextEdit = new QTextEdit(dockWidget);dockWidget->setWidget(dockTextEdit);addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
}Widget::~Widget() {delete ui;
}
 
3. 运行程序
编译并运行程序,你将看到一个主窗口,其中包含菜单栏、工具栏、状态栏和一个可停靠的部件。你可以在中心区域编辑文本,状态栏会显示“Ready”信息。
总结
通过使用 QMainWindow,我们能够轻松构建一个功能齐全的桌面应用程序。
