QT QMenuBra QMenu QAction 菜单栏 操作详解

2023-05-16

       本文详细的介绍了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("提示语");

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

QT QMenuBra QMenu QAction 菜单栏 操作详解 的相关文章

  • Qt creator中操作QAction加入QToolBar

    背景 xff1a 个人笔记 我之前没有系统化学习过任何资料 xff0c 使用很多工具都是按需出发 xff0c 直接上手 xff0c 遇到问题再研究的 所以会有一些弯路 本文言语中难免有对个人情绪的生动描述 xff0c 希望不要影响读者心情
  • Qt笔记---QMenu添加自定义菜单

    Qt笔记 QMenu添加自定义菜单 QMenu用于显示菜单栏交互 xff0c 使用QAction作为选项添加 xff0c 生成的菜单栏为默认样式 默认样式 xff1a 想要在菜单栏上显示一些其他的部件组成的选项 xff0c 可以使用QMen
  • QT QMenuBra QMenu QAction 菜单栏 操作详解

    本文详细的介绍了QMenuBra QMenu QAction 菜单栏的各种操作 xff0c 例如操作 xff1a 新建界面 加入菜单项 加入子菜单 新建二级子菜单 QAction分隔符 pMenuBar 点击信号 触发信号 设置图标 设置禁
  • QT添加右键菜单(一):使用QMenu进行实现。

    目录 前言 1 先看效果图 1 要实现弹出菜单栏 xff0c 主要有三步 xff1a 2 Demo具体实现过程如下 xff1a 3 总结 xff1a 前言 实现一个右键菜单 xff0c 使用QMenu进行实现 xff0c 效果图如下 xff
  • Qt QMenu简介

    1 常用方法 添加带图标 xff0c 文字的菜单项 QAction addAction const QIcon amp icon const QString amp text 添加带快捷键 xff0c 带菜单项接收槽 QAction add
  • Python 字典(Dictionary)操作详解

    这篇文章主要介绍了Python 字典 Dictionary 的详细操作方法 xff0c 需要的朋友可以参考下 Python字典是另一种可变容器模型 xff0c 且可存储任意类型对象 xff0c 如字符串 数字 元组等其他容器模型 一 创建字
  • Redis-Cluster操作详解

    redis在2 8版本中支持分布式的部署 xff0c 但不是真正意义上的集群 xff0c 单独操作一台主机获取相应key 如果这个key没有落在该机器上 xff0c 那么就获取不到 只有分片在该机器上才能获取到 redis从3 0版本开始支
  • Qt之QMenu菜单去除投影效果(阴影)

    一 简述 我们使用Qt中的菜单 xff0c 正常情况下样式是跟随当前系统菜单的样式 xff0c 我们可以使用样式表进行修饰 xff0c 改变原有风格 xff0c 但是window系统上菜单边框四周会附带阴影的效果 xff0c 样式是无法取消
  • Qt中的主窗口QMainWindow

    GUI应用程序都有一个主窗口 虽然前面讲到的QWidget组件也可以定义生成主窗口 但是Qt还定义了一个专门用于实现主窗口的类QMainWindow 为什么 跟QDialog一样的道理 主窗口具有许多主窗口特有的元素组件 为了程序的复用性
  • 为什么 PyQt 执行我的操作三次?

    我对 PyQt 还是个新手 但我真的不知道为什么会发生这种情况 我有一个像这样创建的主窗口 class MainWindow QtGui QMainWindow initialize def init self Call parent co
  • 为什么 QToolTips 不会出现在 QMenu 内的 QActions 上

    我正在用 GUI 编写一个应用程序PySide 我设置了一个QMenu on a QPushButton 添加了几个QActions via QMenu addAction 为了进一步向我添加的用户解释这些操作QToolTip与这些QAct
  • 设置 Qt QPushButton 弹出菜单的位置(向右)

    我正在为 Qt 按钮小部件编写弹出菜单 每当单击按钮时 就会弹出一个菜单 在按钮下方 默认情况下 弹出菜单位于下方左侧 有没有办法让弹出菜单在按钮下方的右侧弹出 没有设置位置的功能 所以我想知道是否有一些复杂的方法可以做到这一点 这是一些代
  • 有没有办法将 QWidget 添加到 QtCreator 中的 QMenu

    我正在创建一个文本编辑器 我想把QComboBox in the QMenu 我在里面没有找到任何方法QMenu处理过这样的事情 最接近的是QMenu addAction 我想知道如何绕过这个障碍 Thanks 你必须子类化QWidgetA
  • QMenu 中 QActions 的 QTooltip

    我希望能够显示工具提示QMenu items QActions 我取得的最好成绩是连接悬停信号QAction to a QTooltip show connect action QAction hovered QToolTip showTe
  • 带文本的 QToolButton:覆盖最小高度以模仿常规按钮高度

    我正在显示Q工具按钮 http doc qt io qt 5 qtoolbutton html带有图标加文本的 s Qt 图标旁边的工具按钮文本 http doc qt io qt 5 qt html ToolButtonStyle enu
  • 对齐 QMenuBar 项目(在左侧添加一些,在右侧添加一些)

    目前我有带有三个 QAction 的 QMenuBar 它看起来像这样 但我想得到这个 让一些 QActions 右对齐 有没有办法做到这一点 对于这个特定问题 最简单的解决方案可能是使用角部件 它可以用来将几乎所有东西放在最右边的位置 当
  • 悬停时突出显示自定义 QWidgetAction

    我的应用程序有一个QMenuBar与一些QMenus 其中每个都有多个QActions 和子QMenus 大部分的QAction 项目是衍生品QWidgetAction并重新实施QWidgetAction createWidget方法 通常
  • 无法隐藏 QMenu 对象 QMenu::setVisible()?

    我已经建立了一个QMenu MainMenu在我的上面MainWindow在我的应用程序中 大家都习惯了 我有以下QMenu主菜单 文件 编辑 SuperHeavyExpertMenus 设置 帮助 我想隐藏子树SuperHeaverExp
  • 如何在按下托盘图标菜单操作时执行功能?

    int main int argc char argv QApplication oApp argc argv QAction action1 QMenu menu QSystemTrayIcon TrayIcon QIcon favico
  • 如何向同一个 QMenu 添加多个 QAction?

    我正在尝试实现 Qt 菜单自定义 并且我提供了一个功能来添加相同的功能QAction在同一个人民币上下文菜单中多次 但是当我尝试这样做时 myMenu gt addAction myAction myMenu gt addAction my

随机推荐

  • 简历信息粘贴板

    简历信息粘贴板 gitee链接 x1f602 最近简历投递感觉很麻烦 xff0c 所以想整个这个 xff0c 欢迎体验 有用可以整个 随便也水一个文 xff0c 好久没更了 x1f466 描述 厌倦了麻烦的简历填写了吗 是不是感觉切换查找复
  • Python装饰器简单说明

    Python装饰器 官方定义 装饰器本质上是一个Python函数 其实就是闭包 xff0c 它可以让其他函数在不需要做任何代码变动的前提下增加额外功能 xff0c 装饰器的返回值也是一个函数对象 装饰器用于有以下场景 xff0c 比如 插入
  • cpp装饰器模式

    装饰器模式 结构型模式 xff1a 在不改变现有对象结构的情况下 xff0c 向对象添加新的功能 xff0c 同时不改变其结构 重点在于动态的增加删除功能 xff0c 装饰类和被装饰类独立 xff0c 不会耦合 返回的对象已经不是原来的对象
  • windows新增右键菜单,通过wsl中的vim打开文件

    文章目录 查看wsl打开方式添加右键菜单增加图标效果 非常简单的方式 x1f44d 查看wsl打开方式 可以看到我这里使用ubuntu2004 exe可以打开 添加右键菜单 按下win输入regedit xff0c 在右边选择管理员打开 然
  • iwr6843isk-HARbag

    文章目录 描述说明数据信息使用方法动作类型jumpsquatswavewalkboxingjack iwr6843isk搭建ROS环境雷达配置参数to txt中数据预处理 二阶段滑窗处理 环境 github链接 https gitee co
  • PVE+NUT+群晖等配置

    文章目录 配置文件说明 默认配置 翻译的 ups conf 设置ups通信相关 upsd conf 设置ups客户访问的相关信息 upsd users 设置upsd用户 nut conf nut的配置 主要是模式 xff0c 决定使用哪些文
  • stm32霸道-lvgl移植学习(一)

    文章目录 效果有用链接要求创建工程屏幕驱动以及触屏驱动LVGL PortWidgets demo其它 效果 目前显示驱动显示较慢 xff0c 后续会优化 有用链接 LVGL官网 代码下载 要求 要求最低要求 建议要求架构16 32 64位微
  • E6410安装PVE直通显卡安装LibreELEC系统

    文章目录 查看cpu是否支持直通音频笔记本关盖设定BIOS设定启动内核IOMMU支持添加驱动黑名单绑定核显到vfio模块然后新建一个虚拟机安装LibreELEC注意事项重启 VM 时 GPU 直通失败如果直通后遇到问题了 xff0c 开机出
  • 关于SublimeText3和MinGW安装的一些心得

    本人也是为了学习C 43 43 xff0c 在无意中找到用Sublime Text3和MinGW来进行组合搭建从而完成代码的编译的运行 安装过程期间 xff0c 也出现了一些错误 xff0c 下面就把我的出现的一些错误贴出来 xff0c 看
  • confluence linux 安装教程

    jdk的安装 参考此链接 confluence下载 Confluence官网 linux安装 将下载后的安装包上传到linux系统中 xff0c 并授予权限 xff0c 注意请使用root用户安装 xff0c 否则会出现部分功能无法使用的情
  • Boost库编译指南

    1 Boost 库简介 Boost 是一个开源的 C 43 43 库集合 xff0c 提供了许多高质量的库 xff0c 涵盖了许多不同的领域 xff0c 如智能指针 多线程编程 正则表达式 数学库等等 Boost 的目标是提高 C 43 4
  • 解决Flask中出现的跨域问题has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘ header...

    今天在用flask做接口进行本地调用测试时发现调用报错 如图所示 解决办法 xff1a 在项目目录打开终端 xff0c 安装以下库 pip install U flask cors 再在代码中插入 CORS app resources 61
  • 【Web笔记】Html学习手册

    HTML简介 HTML是 超文本标记语言 xff08 HyperText Markup Language xff09 的简称 HTML的前世今生 从初期的网络诞生后 xff0c 已经出现了许多HTML版本 版本发布时间HTML1991HTM
  • webrtc-kurento

    WebRTC 呼叫者通过 navigator mediaDevices getUserMedia en US 捕捉本地媒体 呼叫者创建一个RTCPeerConnection 并调用 RTCPeerConnection addTrack 注
  • windows10远程连接centos图像化桌面步骤和遇到的问题

    一 安装配置XRDP 首先需要切换到root用户下 xff1b 1 安装epel库 1 xff09 检测系统是否已经安装epel库 rpm qa grep epel 2 xff09 安装epel库 yum install epel rele
  • linux磁盘分区、挂载、扩容

    1 fdisk l 查看磁盘情况 xff0c 可以看到总共4块磁盘 xff0c sda是系统盘及根目录 xff0c 剩余sdb sdc sdd三块磁盘可用 root 64 openEuler dev fdisk l Disk dev sdd
  • QT 线程之QWaitCondition(深入理解)

    QWaitCondition 允许线程在某些情况发生时唤醒另外的线程 一个或多个线程可以阻塞等待一QWaitCondition 用wakeOne 或wakeAll 设置一个条件 wakeOne 随机唤醒一个 xff0c wakeAll 唤醒
  • Qt QMessageBox使用详解

    本文详细的介绍了QMessageBox控件的各种操作 xff0c 例如 xff1a 消息提示框的使用 判断消息提示框的按钮 标准图标和自定义图标 定时关闭 自定义样式等操作 本文作者原创 xff0c 转载请附上文章出处与本文链接 Qt QM
  • C++ permutation排列算法详解(深入了解,一文学会)

    排列就是一次对对象序列或值序列的重新排列 例如 xff0c ABC 中字符可能的排列是 xff1a 34 ABC 34 34 ACB 34 34 BAC 34 34 BCA 34 34 CAB 34 34 CBA 34 三个不同的字符有 6
  • QT QMenuBra QMenu QAction 菜单栏 操作详解

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