QT QMenuBra QMenu QAction 菜单栏 操作详解

news2025/1/19 20:43:19

       本文详细的介绍了QMenuBra QMenu QAction 菜单栏的各种操作,例如操作:新建界面、加入菜单项、加入子菜单、新建二级子菜单、QAction分隔符、pMenuBar、点击信号、触发信号、设置图标、设置禁用、设置提示语 等操作

本文作者原创,未经允许禁止转载。

QT QMenuBra QMenu QAction 菜单栏 操作详解目录

1新建界面

2 加入菜单项

 3 加入子菜单

4 新建二级子菜单

5 QAction分隔符

 6 pMenuBar

7 点击信号

 8 触发信号

 9 设置图标

 10 设置禁用

 11 设置提示语


QMenuBar: 就是所有窗口的菜单栏,在此基础上添加不同的QMenu和QAction

QMenu: 菜单栏里面菜单,可以显示文本和图标,但是并不负责执行操作,有点类似label的作用

QAction: Qt 将用户与界面进行交互的元素抽象为一种“动作”,使用QAction类表示。QAction才是真正负责执行操作的部件。

1新建界面

         刚创建的界面有自带的QMenuBar所以不需要在次创建

2 加入菜单项

    /* 菜单项 */
    QMenu *m_menuFile;
    QMenu *m_menuEdit;
    QMenu *m_menuView;
    QMenu *m_menuProject;
    QMenu *m_menuTest;

    /* 菜单项 窗口获得焦点时按alt+n即可打开"文件"菜单项,(&)快捷方式 */
    m_menuFile = new QMenu("文件(&F)");
    m_menuEdit = new QMenu("编辑(&E)");
    m_menuView = new QMenu("视图(&V)");
    m_menuProject = new QMenu("项目(&P)");
    m_menuTest = new QMenu("调试(&D)");

    //菜单项添加调试子菜单
    m_menuTest->addAction(m_actionWindow);
    m_menuTest->addAction(m_actionGraphics);
    m_menuTest->addAction(m_actionWindow_);
    m_menuTest->addAction(m_actionPerformance);

 3 加入子菜单

    /* 子菜单 */
    // 文件子菜单
    QAction *m_actionNewFile;
    QAction *m_actionOpen;
    QAction *m_actionInitial;
    // 编辑子菜单
    QAction *m_actionConversion;
    QAction *m_actionFind;
    QAction *m_actionWithdraw;
    // 视图子菜单
    QAction *m_actionViewPlan;
    QAction *m_actionViewTeam;
    QAction *m_actionViewService;
    // 项目子菜单
    QAction *m_actionTemp;
    // 调试子菜单
    QAction *m_actionWindow;
    QAction *m_actionGraphics;
    QAction *m_actionPerformance;


    /* 定义子菜单 (&)为子菜单快捷键*/
    //文件子菜单
    m_actionNewFile = new QAction("新建(&N)");
    m_actionOpen = new QAction("打开(&O)");
    m_actionInitial = new QAction(QIcon(":/new/prefix1/resource/soccer_ball.ico"),"初始页(&E)");
    //编辑子菜单
    m_actionConversion = new QAction("转到(&G)");
    m_actionFind = new QAction("查找&替换(&F)");
    m_actionWithdraw = new QAction("撤销(&U)");
    //视图子菜单
    m_actionViewPlan = new QAction("解决方案资源管理器(&P)");
    m_actionViewTeam = new QAction("团队资源管理器(&M)");
    m_actionViewService = new QAction("服务器资源管理器(&V)");
    //项目子菜单
    m_actionTemp = new QAction("导出模板(&E)");
    //调试子菜单
    m_actionWindow = new QAction("窗口(&W)");
    m_actionGraphics = new QAction("图形(&C)");
    m_actionWindow_ = new QAction();
    m_actionPerformance = new QAction("性能探查器(&F)");

    //菜单项添加文件子菜单
    m_menuFile->addAction(m_actionNewFile);
    m_menuFile->addAction(m_actionOpen);
    m_menuFile->addAction(m_actionInitial);
    //菜单项添加编辑子菜单
    m_menuEdit->addAction(m_actionConversion);
    m_menuEdit->addAction(m_actionFind);
    m_menuEdit->addAction(m_actionWithdraw);
    //菜单项添加视图子菜单
    m_menuView->addAction(m_actionViewPlan);
    m_menuView->addAction(m_actionViewTeam);
    m_menuView->addAction(m_actionViewService);
    //菜单项添加项目子菜单
    m_menuProject->addAction(m_actionTemp);

    //菜单项添加调试子菜单
    m_menuTest->addAction(m_actionWindow);
    m_menuTest->addAction(m_actionGraphics);
    m_menuTest->addAction(m_actionWindow_);
    m_menuTest->addAction(m_actionPerformance);

4 新建二级子菜单

    //二级子菜单
    QMenu * m_menu_new;
    QMenu * m_menu_open;
    QMenu * m_menu_conversion;
    QMenu * m_menu_find;
    QMenu * m_menu_window;
    QMenu * m_menu_graphics;

    m_menu_new      = new QMenu();
    m_menu_open         = new QMenu();
    m_menu_conversion   = new QMenu();
    m_menu_find         = new QMenu();
    m_menu_window       = new QMenu();
    m_menu_graphics     = new QMenu();


    /** 编辑子菜单 二级菜单菜单子项 */
    QAction *m_menu_conversion_con      = new QAction(m_menu_conversion);
    QAction *m_menu_conversion_all      = new QAction(m_menu_conversion);
    QAction *m_menu_conversion_file     = new QAction(m_menu_conversion);
    QAction *m_menu_conversion_ufile    = new QAction(m_menu_conversion);
    QAction *m_menu_conversion_type     = new QAction(m_menu_conversion);
    QAction *m_menu_conversion_members  = new QAction(m_menu_conversion);
    QAction *m_menu_conversion_symbol   = new QAction(m_menu_conversion);
    QAction *m_menu_conversion_back     = new QAction(m_menu_conversion);
    QAction *m_menu_find_f  = new QAction(m_menu_find);
    QAction *m_menu_find_r  = new QAction(m_menu_find);
    QAction *m_menu_find_l  = new QAction(m_menu_find);
    QAction *m_menu_find_s  = new QAction(m_menu_find);

    m_menu_conversion_con->setText("转到(&G)...");
    m_menu_conversion_all->setText("转到所有(&G)...");
    m_menu_conversion_file->setText("转到文件(&F)...");
    m_menu_conversion_ufile->setText("转到最近的文件(&R)...");
    m_menu_conversion_type->setText("转到类型(&T)...");
    m_menu_conversion_members->setText("转到成员(&M)...");
    m_menu_conversion_symbol->setText("转到符号(&S)...");
    m_menu_conversion_back->setText("转到上一个编辑位置...");
    m_menu_find_f->setText("快速查找(&F)...");
    m_menu_find_r->setText("快速替换(&R)...");
    m_menu_find_l->setText("在文件中查找(&I)...");
    m_menu_find_s->setText("在文件中替换(&S)...");

    m_menu_conversion->addAction(m_menu_conversion_con);
    m_menu_conversion->addAction(m_menu_conversion_all);
    m_menu_conversion->addAction(m_menu_conversion_file);
    m_menu_conversion->addAction(m_menu_conversion_ufile);
    m_menu_conversion->addAction(m_menu_conversion_type);
    m_menu_conversion->addAction(m_menu_conversion_members);
    m_menu_conversion->addAction(m_menu_conversion_symbol);
    m_menu_conversion->addAction(m_menu_conversion_back);
    m_menu_find->addAction(m_menu_find_f);
    m_menu_find->addAction(m_menu_find_r);
    m_menu_find->addAction(m_menu_find_l);
    m_menu_find->addAction(m_menu_find_s);

    /** 调试子菜单 二级菜单菜单子项 */
    QAction *m_menu_window_T     = new QAction(m_menu_window);
    QAction *m_menu_graphics_I  = new QAction(m_menu_graphics);
    QAction *m_menu_graphics_X  = new QAction(m_menu_graphics);

    m_menu_window_T->setText("显示诊断工具(&T)...");
    m_menu_graphics_I->setText("对安装的应用启动图形调试(&I)...");
    m_menu_graphics_X->setText("DirectX控制面板(&X)...");

    m_menu_window->addAction(m_menu_window_T);
    m_menu_graphics->addAction(m_menu_graphics_I);
    m_menu_graphics->addAction(m_menu_graphics_X);

    //设置子菜单 m_actionGraphics
    m_actionWindow->setMenu(m_menu_window);
    m_actionGraphics->setMenu(m_menu_graphics);

5 QAction分隔符

        菜单栏加入一个QAction将QAction的属性设置为true则可以将菜单项改变为分隔符

     //在菜单项之间添加分割线
     m_actionWindow_->setSeparator(true);

 6 pMenuBar

        pMenuBar 代码创建菜单栏 (当不使用QMainWindow自带的菜单栏时,必须要加上此行)

    //setMenuBar(pMenuBar);

7 点击信号

private slots:
    void s_menuPro();

    void s_menuFile();


connect(m_menu_new_pro,SIGNAL(triggered()),SLOT(s_menuPro()));
connect(m_menu_new_file,SIGNAL(triggered()),SLOT(s_menuFile()));

void MainWindow::s_menuPro()
{
    qDebug() << "新建项目 槽函数触发";
}

void MainWindow::s_menuFile()
{
    qDebug() << "新建文件 槽函数触发";
}

 8 触发信号

private slots:
    void s_menu_window_t();

connect(m_menu_window_T,SIGNAL(hovered()),SLOT(s_menu_window_t()));

void MainWindow::s_menu_window_t()
{
    qDebug() << "诊断工具 鼠标触发 槽函数触发";
}

 9 设置图标

m_actionNewFile->setIcon(QIcon("D:/ico.png"));

//另外写法
//m_actionNewFile->setIcon(QIcon("D:/ico.png"),"setText");

 10 设置禁用

m_actionNewFile->setEnabled(false);

 11 设置提示语

m_actionNewFile->setStatusTip("提示语");

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/106141.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Eclipse常用设置

Eclipse 是著名的跨平台的自由集成开发环境&#xff08;IDE&#xff09;。最初主要用来 Java 语言开发&#xff0c;但是目前亦有人通过插件使其作为其他计算机语言比如 C 和 Python 的开发工具 目录 1.解决中文乱码设置propertiew编码 2.更改字体大小 3.设置护眼颜色 4.修…

Usaco Training刷怪旅 第二层第一题:Milking Cows

usaco training 关注我持续更新usaco training内容 Three farmers rise at 5 am each morning and head for the barn to milk three cows. The first farmer begins milking his cow at time 300 (measured in seconds after 5 am) and ends at time 1000. The second farmer …

Go语言入门【09】结构体

结构体 相比于Java&#xff0c;在Go语言中没有类的概念&#xff0c;但是多了结构体。结构体与Java中的类很像&#xff0c;是表示一系列同一类型或不同类型的数据构成的数据集合。 例如可以将学生抽象成一个结构体&#xff0c;每一个学生有以下属性&#xff1a; Name&#xf…

基于pytorch搭建CNN 对人像是否戴口罩进行检测分类 详细教程

项目介绍 我们将使用 CNN (卷积神经网络)和机器学习分类器创建一个检测一个人是否戴着口罩的分类器。它将检测一个人是否戴着口罩。 我们将从头开始学习,我将对每一步进行解释。我需要你对机器学习和数据科学有基本的了解。我已经在本地 Windows 10 机器上实现了它,如果你…

A-Level/IB/AP不同课程体系分数可以相互转换吗?

都知道国际学校有不同的课程体系&#xff0c;也会有不同的考试体系。比如A-Level、IB、SAT/ACT和AP&#xff1b;甚至还有国内的高考体系。所以可能有同学家长会问&#xff0c;不同体系之间的分数是否能够进行对比呢&#xff1f; 严格来讲&#xff0c;其实不好对比&#xff0c;但…

wy的leetcode刷题记录_Day59

wy的leetcode刷题记录_Day59 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间&#xff1a;2022-12-9 前言 目录wy的leetcode刷题记录_Day59声明前言1780. 判断一个数字是否可以表示成三的幂的和题目介绍思路代码收获63. 题目题目介绍思路代码收获178…

m基于RFID和DBSCAN聚类的InSAR室内三维定位算法的matlab仿真

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 许多室内应用需要有关物体的空间信息。示例应用程序包括项目查找&#xff0c;对象级别映射和在仓库或库中管理的大型对象。然而&#xff0c;使用802.11&#xff0c;可见光或声学的基于位置的服务…

浏览器里console是异步的

console我一直以为是同步执行的&#xff0c;直到在一本书上看到&#xff0c;才了解到console本身有异步的特性。虽然在平常开发中经常使用console&#xff0c;但是真的没有意识到它的异步性。 下面就看下异步的实例 基础类型 该类型是我们开发中经常使用的&#xff0c;正是这…

01VSCode配置Anaconda 环境和调试环境

VSCode配置Anaconda 环境 Anaconda 简介 自带Python解释器Anaconda 附带了一大批常用数据科学包150 多个科学包及其依赖项Anaconda 是在 conda&#xff08;一个包管理器和环境管理器&#xff09;上发展出来的&#xff0c;包含了虚拟环境管理工具通过虚拟环境可以使不同的Pyth…

【Python深度学习】RNN循环神经网络结构讲解及序列回归问题实战(图文解释 附源码)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 循环神经网络 循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;是用于对序列的非线性特征进行学习的深度神经网络。循环神经网络的输入是有前后关联关系的序列。 循环神经网络可以用来解决与序列…

python数据预处理时缺失值的不同处理方式!

在使用python做数据分析的时候&#xff0c;经常需要先对数据做统一化的处理&#xff0c;缺失值的处理是经常会使用到的。 一般情况下&#xff0c;缺失值的处理要么是删除缺失数据所在的行&#xff0c;要么就是对缺失的单元格数据进行填充。 今天介绍的是使用差补法/均值/固定…

CSS -- 08. 移动WEB开发之流式布局

文章目录移动WEB开发之流式布局1 移动端基础1.1 浏览器现状1.2 手机屏幕现状1.3 移动端调试方法2 视口2.1 布局视口 layout viewport2.2 视觉视口 visual viewport2.3 理想视口 ideal viewport2.4 meta视口标签3 二倍图3.1 物理像素&物理像素比3.2 多倍图3.3 背景缩放 back…

clickhouse-部署指南(亲测超详细)

文章目录环境要求测试环境Tar方式安装clickhouse用户授权访问控制服务配置启动连接测试TABIX webUI性能测试环境要求 ClickHouse可以在任何具有x86_64&#xff0c;AArch64或PowerPC64LE CPU架构的Linux&#xff0c;FreeBSD或Mac OS X上运行 官方预构建的二进制文件通常针对x86…

prometheus+grafana对数据库mysql监控

安装 mysql docker run --name mysql-test -p MYSQL ROOT_PASSWORD123456 -p23306:3306 mysql:5.7.26启动镜像的时候 已经是把docker容器内部的3306端口 映射到本机了 直接通过navicat连上 进入mysql容器内部 docker exec -it 容器id /bin/bash, 启动 mysql. docker start d…

33.flink cdc 实时数据同步利器

什么是flink cdc? 对很多初入门的人来说是无法理解cdc到底是什么个东西。 有这样一个需求&#xff0c;比如在mysql数据库中存在很多数据&#xff0c;但是公司要把mysql中的数据同步到数据仓库(starrocks), 数据仓库你可以理解为存储了各种各样来自不同数据库中表。 数据的同步…

2-2-3-7、FutureCompletableFuture详解

Runnable 线程的任务接口&#xff0c;用于定义被执行任务方法的抽象&#xff0c;是函数式接口&#xff08;仅存在一个需要实现方法的接口&#xff09;&#xff0c;其方法为run方法通过对并发编程中java线程的了解&#xff0c;Thread调用start方法&#xff0c;最后操作系统会通过…

Confluence 调整会话超时(session timeout)

文章目录前言一、概括二、实际场景应用1.更改空闲超时2.更改记住我 cookie 的生命周期3.在用户通过身份验证后的某个时间强制注销用户总结前言 在 Confluence 中有两个会话 Cookie&#xff1a; JSESSIONID: 由 Tomcat 使用和管理。 默认情况下&#xff0c;这被视为会话 cooki…

类与对象(中)

类与对象类的6个默认成员函数构造函数概念特性析构函数概念特性拷贝构造函数概念特性赋值运算符重载运算符重载赋值运算符重载前置 后置 重载const成员函数取地址及const取地址操作符重载类的6个默认成员函数 当类中没有任何成员时&#xff0c;称作空类 但是呢&#xff0c;编译…

Docker使用(容器、镜像相关命令)

虚拟化 在计算机中&#xff0c;虚拟化&#xff08;英语&#xff1a;Virtualization&#xff09;是一种资源管理技术&#xff0c;是将计算机的各种实体资源&#xff0c;如服务器、网络、内存及存储等&#xff0c;予以抽象、转换后呈现出来&#xff0c;打破实体结构间的不可切割…

虹科方案|将以太网连接添加到Dell EMC PowerVault™ ML3 SAS库

一、Dell EMC 和 ATTO 磁带解决方案 Dell EMC 和 ATTO 提供了业界唯一的商用解决方案&#xff0c;可将高速以太网连接添加 到标准 SAS LTO 磁带驱动器。ATTO XstreamCORE ET 8200 智能网桥允许您使用 iSCSI 和 iSER 协议通过标准以太网远程连接到 SAS 磁带驱动器。当与采用最新…