qt QMenuBar详解

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();
    }

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

相关推荐
feiyangqingyun2 小时前
Qt音视频开发技巧/推流带旋转角度/rtsprtmp推流/保存文件到MP4/拉流解析旋转角度
qt·音视频·qt旋转角度推流
清醒的兰3 小时前
Qt 基于TCP套接字编程
网络·qt·tcp
mahuifa10 天前
PySide环境配置及工具使用
python·qt·环境配置·开发经验·pyside
小灰灰搞电子10 天前
Qt PyQt与PySide技术-C++库的Python绑定
c++·qt·pyqt
Echo``10 天前
12.OpenCV—基础入门
开发语言·c++·人工智能·qt·opencv·计算机视觉
智驾10 天前
QML革命:下一代GUI开发的核心优势详解
qt·qml
五_谷_丰_登10 天前
mongoDB服务本地化部署
数据库·c++·qt·mongodb
tangchao340勤奋的老年?10 天前
Qt QMap数据清除测试(验证QMap内存正确释放方法)
开发语言·qt
攻城狮7号10 天前
【AI时代速通QT】第二节:Qt SDK 的目录介绍和第一个Qt Creator项目
c语言·c++·qt·跨平台
hvinsion10 天前
【开源工具】一键解决使用代理后无法访问浏览器网页问题 - 基于PyQt5的智能代理开关工具开发全攻略
开发语言·python·qt·开源·vpn·代理服务器