00. 目录

文章目录

  • 00. 目录
  • 01. 概述
  • 02. 开发环境
  • 03. 主窗口菜单设计
  • 04. 添加资源菜单
  • 05. 使用资源文件
  • 06. 使用代码添加菜单图标
  • 07. 附录

01. 概述

主窗口部件就是一般的应用程序主窗口,它包含了菜单栏、工具栏、中心部件、状态栏和可停靠部件等。接下来将着重介绍菜单的实现以及使用资源文件来添加菜单图标。

02. 开发环境

Windows系统:Windows10

Qt版本:Qt5.15或者Qt6

03. 主窗口菜单设计

3.1 新建Qt Widgets Application,项目名称4MainWindow,基类选择QMainWindow,类名为MainWindow。

3.2 创建完项目后,双击mainwindow.ui文件进入设计模式。在这里可以看到界面左上角的“在这里输入”,我们可以在这里添加菜单。双击“在这里输入”,将其更改为“文件(&F)”,然后按下回车键,效果如下图所示。这里的&F表明将菜单的快捷键设置为了Alt+ F,可以看到,实际的显示效果中&符号是隐藏的。

3.3 在文件菜单中添加“新建(&N)”子菜单,效果如下图所示。菜单后面的那个加号图标是用来创建下一级菜单的。(PS:菜单中如果无法输入中文,可以从别处复制粘贴)

04. 添加资源菜单

4.1 Qt中可以使用资源文件将各种类型的文件添加到最终生成的可执行文件中,这样就可以避免使用外部文件而出现的一些问题。而且,在编译时Qt还会将资源文件进行压缩,我们可能发现生成的可执行文件比我们添加到其中的资源文件还要小。

4.2 我们向项目中添加新文件,模板选择Qt分类中的Qt资源文件(Qt Resource File)。如下图所示。然后将名称设置为image。

4.3 添加完文件后会自动打开该资源文件,需要先添加前缀,点击“添加”按钮,然后选择“添加前缀”,默认的前缀是“/new/prefix1”,这个可以随意修改(不要出现中文字符),我们这里因为要添加图片,所以修改为“/image”。然后再按下添加按钮来添加文件,这里最好将所有要用到的图片放到项目目录中。比如这里在项目目录中新建了一个images文件夹,然后将需要的图标文件粘贴进去。添加完文件后,如下图所示。

4.4 当添加完资源后,一定要按下Ctrl + S来保存资源文件,不然在后面可能无法显示已经添加的资源。

05. 使用资源文件

5.1 Qt中的一个菜单被看做是一个Action,我们在下面的Action编辑器(Action Editor)中可以看到刚才添加的“新建”菜单,如下图所示。

5.2 双击该条目,会弹出编辑动作对话框,这里可以进行各项设置,比如我们可以设置菜单项的快捷键,点击一下Shortcut后面的行编辑器,然后按下键盘上的Ctrl + N,这样就可以将该菜单项的快捷键设置为Ctrl + N。如下图所示。那么大家可能会问,既然该菜单项的快捷键是这么设置的,那么菜单项名称“新建(N)”中的N是什么呢?这个可以被称为加速键,就是只有当文件菜单处于激活(显示)状态时,按下N键才会执行新建菜单的功能。

5.3 在编辑动作对话框中的“图标”后面的[[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M6SQqxnK-1616401989052)(assets/205600esc55c2kf2fsfifl.png.thumb.jpg)]](javascript:;)黑色箭头下拉框可以选择使用资源还是使用文件来最为图标,如果使用文件的话,那么就可以直接在弹出的文件对话框中选择本地磁盘上的一个图标文件。如果使用资源的方式,如果直接点击这个按钮就是默认的使用资源。

06. 使用代码添加菜单图标

下面我们使用代码再来添加一个菜单项,并为其设置图标。在编辑模式打开mainwindow.cpp文件,并在构造函数中添加如下图所示代码:


MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//创建新的动作QAction *openAction = new QAction(tr("&Open"), this);//添加图标QIcon icon(":/image/images/task.png");openAction->setIcon(icon);//设置快捷键openAction->setShortcut(QKeySequence(tr("Ctrl+O")));//在文件菜单中设置新的打开动作ui->menu_F->addAction(openAction);//创建新的编辑菜单QMenu *menu_E = ui->menubar->addMenu(tr("编辑(&E)"));QAction *findAction = new QAction(tr("&Find"), this);QIcon icon2(":/image/images/setting.png");findAction->setIcon(icon2);findAction->setShortcut(QKeySequence("Ctrl+F"));menu_E->addAction(findAction);
}

这里添加图标时,就使用了资源文件中的图标。使用资源文件,需要在最开始使用冒号,然后添加前缀,后面是文件的路径。在代码中使用“文件菜单”,就是使用其objectName。主窗口上的菜单都是在菜单栏menuBar上的,因为这里使用了设计模式,所以可以通过ui->menuBar来获取菜单栏,菜单栏是QMenuBar类对象。如果不使用设计模式而使用纯代码创建项目,那么可以直接在MainWindow类中使用menuBar()方法来获取菜单栏。菜单栏上可以通过addMenu()来添加新的菜单,而菜单中可以使用QAction来创建菜单项。现在可以运行程序查看效果。

07. 附录

【Qt】Qt资源应用--菜单图标相关推荐

  1. 【Qt入门第4篇】 基础(四)添加菜单图标——使用Qt资源文件

    导语 后面几篇里我们将介绍常用的Qt主窗口部件QMainWindow,主窗口部件就是一般的应用程序主窗口,它包含了菜单栏.工具栏.中心部件.状态栏和可停靠部件等.这一篇将着重介绍菜单的实现以及使用资源 ...

  2. qt中添加资源文件以及添加菜单图标、工具栏中菜单的快捷方式、窗口以及对话框的icon

    1.file--new-QT resource file,就会在工程中添加一个资源文件,然后单击Add下拉框,选择Add prefix,可以将生成的/new/prefix的后缀改为其他的名字,如fil ...

  3. 在Qt中添加菜单图标

    第一步:新建Qt Widgets Application,取合适的项目名称,基类选择QMainWindow,类名为MainWindow. 第二步:创建完项目后,双击mainwindow.ui文件进入设 ...

  4. QT打印窗口、退出、设置字体及颜色、设置时间、控件实现系统函数、添加资源文件(菜单图片)、工具栏添加图片

    打印窗口 #include <QPrintDialog> 退出 QObject::connect(ui->exitAction, SIGNAL(triggerd()), this, ...

  5. qt修改程序图标名称_解决Qt应用程序添加icon图标,修改窗口图标以及添加系统托盘问题...

    一.Qt应用程序添加icon图标的方法: 首先,我们需要先准备两个文件,一个是icon图标,另一个是rc文件,我分别命名为"myApp.rc"和"soft.ico&quo ...

  6. Qt Creator浏览ISO 7000图标

    Qt Creator浏览ISO 7000图标 浏览ISO 7000图标 在应用程序中使用ISO图标 浏览ISO 7000图标 您可以将与Qt Creator一起安装的ISO 7000图标库中的图标添加 ...

  7. Qt5 添加菜单图标资源图片

    近日在学习豆子大神的Qt教程时撸了一段代码,但在给菜单栏菜单选项添加图标时,发现图标怎么都不显示...遂有此文,记录一下 Qt 工程添加图标资源的流程. 源代码片段是这样写的,但是就是不显示(文末有全 ...

  8. Qt图形界面编程入门(Qt的历史、Qt安装资源链接、Qt Creator简介)

    Qt的历史渊源 Qt是1991年由挪威的奇趣科技(Trolltech)公司开发的跨平台C++图形用户界面(GUI)用程序开发框架,2008年,奇趣科技公司被诺基亚公可收购,Qt也因此成为诺基亚公司旗下 ...

  9. Windows下Qt Creator设置IDE菜单字体样式

    Windows下Qt Creator设置IDE菜单字体样式 本文为解决以下问题: IDE的菜单字体太小 IDE的菜单字体样式,可以更换为微软雅黑 创建样式文件 在Qt Creator目录下C:\Qt\ ...

最新文章

  1. 万字干货介绍WebAR的实现与应用
  2. 福布斯 : 企业市场Chrome任重道远
  3. boke例子: freermarker:在使用ajax传递json数据的时候多出冒号
  4. boost::uuid模块实现不同形式随机生成器的基准的测试程序
  5. centos 开机启动java_Centos 7将java jar包自定义开机启动服务
  6. 生产管理erp系统源码_仁和ERP企业管理系统提高生产管理流程
  7. php 字符串 字典序序排序,C++ 怎么实现字典序排序法,自然排序
  8. 第二十五期:搞定Linux Shell文本处理工具,看完这篇集锦就够了
  9. php5.4.45的php.ini文件
  10. Bad Hair Day(POJ-3250)
  11. 软件 Bug 引发的致命事故,程序员责任何在?| 技术头条
  12. ERP系统重新打开订单的后台限制解析
  13. 打造黑苹果(一)组装硬件的选择与组装
  14. Camera 360使用之坑
  15. 游戏模型与动漫之间,有多大差距?
  16. 俄罗斯方块shell脚本
  17. android 4.0版本手机接受多条短信分析
  18. brew install gpg
  19. [励志]知乎热门:做事情三分钟热度怎么破?
  20. 《增强现实:原理、算法与应用》读书笔记(1)基础矩阵、本质矩阵与单应性矩阵

热门文章

  1. html多个盒子重叠浮动,如何让浮动后的多个盒子水平居中
  2. 每日程序C语言12-统计字符个数
  3. python字符串加减乘除_python 数字字符串加减乘除-女性时尚流行美容健康娱乐mv-ida网...
  4. Java黑皮书课后题第6章:6.10(使用isPrime方法)程序清单6-7提供了测试某个数字是否是素数的方法isPrime(int number)。使用这个方法求小于10000的素数的个数
  5. android动态获取输入值,Android实现动态自动匹配输入内容
  6. 岳阳师范学院计算机系刘威,计算机学院青年教师刘威博士发表高水平科研论文...
  7. 4键电子手表说明书_家有破壁机的要收藏,教你4道早餐食谱,细腻香甜,比喝豆浆舒服...
  8. SpringBoot学习笔记(4)----SpringBoot中freemarker、thymeleaf的使用
  9. spring-boot-2.0.3之quartz集成,不是你想的那样哦!
  10. Python之迭代器