qt QMenuBar详解

devtools/2024/11/7 5:41:57/
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();  
}  

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

           


http://www.ppmy.cn/devtools/131927.html

相关文章

【论文复现】KAN卷积:医学图像分割新前沿

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀知识图谱推理 1. 概述2. 核心创新点3. 模块介绍KANUNext模块 4. 本文主要结构5. 主要代码6. 数据集7. 结果展示8. 参考文献 前言&#xff1a;…

一个例子来说明Ada语言的实时性支持

Ada是一种专为工程应用和实时系统设计的编程语言&#xff0c;它提供了丰富的特性来确保程序的实时性和可靠性。下面是一个简化的例子&#xff0c;展示了Ada如何用于编写飞机电子控制器的代码&#xff0c;并说明Ada的实时性是如何保证的。 Ada实时性的关键特性&#xff1a; 任务…

SAP ABAP开发学习——WDA 二 控制器

目录 控制器基本架构 组件控制器/自定义控制器 视图控制器 Window控制器 示例 窗口添加视图 视图进行关联 事件添加 控制器基本架构 组件控制器/自定义控制器 视图控制器 Window控制器 示例 视图添加按钮 窗口添加视图 使用拖拽添加 视图进行关联 对INPUT_VIEW 对OU…

小柯剧场“真人秀”:如何玩转情感与竞技的双重游戏?

11月2日&#xff0c;小柯剧场“戏剧训练营”首周学员考试在如火如荼的直播中落下帷幕。这是小柯剧场首次以综艺全网直播的形式&#xff0c;本次考核内容围绕“声乐”清唱固定曲目、“形体”课上即兴编舞动作以及通过道具或动作展开的即兴“台词、表演”四个方面进行。此番&…

离线部署k8s1.21.2集群教程

一、准备材料 离线安装包:k8s-install.zip 二、环境规划 IP CPU/MEM 主机名 角色

mac 本地docker-mysql主从复制部署

mac 本地docker-mysql主从复制部署,服务器同理 1.本地docker启动两个mysql服务.端口号不一样 没有选择挂载到宿主机.只做测试用. 只是端口号不一样容器删掉.就没有数据了. 生产测试,需要挂在 master docker run -d --name mysql-slave -p 3308:3306 \ -e MYSQL_ROOT_PASSWORD…

计算机视觉的研究方向和相应算法

计算机视觉是一个广泛的领域&#xff0c;涵盖了多种研究方向和算法。以下是对计算机视觉研究方向及其相关算法的详细介绍&#xff1a; 研究方向图像识别与分类&#xff1a;研究如何让计算机识别并分类图像中的对象&#xff0c;如车辆、人脸、动物等。 目标检测与跟踪&#xff1…

搜索引擎之shodan(一):初始化及安装

声明&#xff1a;学习素材来自b站up【泷羽Sec】&#xff0c;侵删&#xff0c;若阅读过程中有相关方面的不足&#xff0c;还请指正&#xff0c;本文只做相关技术分享,切莫从事违法等相关行为&#xff0c;本人一律不承担一切后果 引言&#xff1a; 1.Shodan 是一个专门用于搜索连…