1、概述
QMenuBar是Qt框架中用于创建菜单栏的类,它继承自QWidget。QMenuBar通常位于QMainWindow对象的标题栏下方,用于组织和管理多个QMenu(菜单)和QAction(动作)。菜单栏提供了一个水平排列的容器,用于放置下拉菜单,这些菜单项可以帮助用户更方便地访问应用程序的各种功能。
2、重要方法
- addMenu():向菜单栏中添加一个菜单。可以添加带有标题或图标的QMenu对象。
- addAction():向菜单中添加一个动作。这些动作可以是简单的文本按钮,也可以与特定的快捷键或图标相关联。
- setCornerWidget():在菜单栏的第一个菜单项左侧或最后一个菜单项右侧设置一个小部件。
- cornerWidget():返回当前在菜单栏角落位置的小部件。
- insertMenu():在指定动作之前插入一个菜单。
- insertSeparator():在指定动作之前插入一个分隔符。
- actionAt():返回指定位置处的QAction对象。
- actionGeometry():返回指定QAction对象的几何形状。
3、重要信号
- triggered(QAction *action):当鼠标单击触发属于该菜单栏的菜单中的动作时,会发出此信号。这个信号对于将菜单操作连接到槽函数非常有用。
- hovered(QAction *action):当一个菜单动作被高亮时,这个信号被发出。
#include <QApplication>  
#include <QMainWindow>  
#include <QMenuBar>  
#include <QMenu>  
#include <QAction>  
#include <QFileDialog>  
#include <QDebug>  
  
class MainWindow : public QMainWindow {  
    Q_OBJECT  
  
public:  
    MainWindow(QWidget *parent = nullptr) : QMainWindow(parent) {  
        // 创建菜单栏  
        QMenuBar *menuBar = new QMenuBar(this);  
        this->setMenuBar(menuBar);  
  
        // 创建菜单和动作  
        QMenu *fileMenu = menuBar->addMenu("文件(&F)");  
        QAction *openAct = new QAction("打开(&O)", this);  
        connect(openAct, &QAction::triggered, this, &MainWindow::openFile);  
        fileMenu->addAction(openAct);  
  
        QAction *newAct = new QAction("新建(&N)", this);  
        fileMenu->addAction(newAct);  
  
        QAction *saveAct = new QAction("保存(&S)", this);  
        fileMenu->addAction(saveAct);  
  
        fileMenu->addSeparator();  
  
        QAction *exitAct = new QAction("退出(&X)", this);  
        connect(exitAct, &QAction::triggered, qApp, &QApplication::quit);  
        fileMenu->addAction(exitAct);  
  
        QMenu *editMenu = menuBar->addMenu("编辑(&E)");  
        QAction *copyAct = new QAction("复制", this);  
        editMenu->addAction(copyAct);  
  
        QAction *selectAllAct = new QAction("全选", this);  
        editMenu->addAction(selectAllAct);  
    }  
  
private slots:  
    void openFile() {  
        QFileDialog::getOpenFileName(this, "打开文件");  
    }  
};  
  
int main(int argc, char *argv[]) {  
    QApplication app(argc, argv);  
    MainWindow window;  
    window.show();  
    return app.exec();  
}  


觉得有帮助的话,打赏一下呗。。
 
           



![[vulnhub]DC: 5](https://i-blog.csdnimg.cn/direct/6196ac89e770448ab458ea00894b3006.png)















