导语

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

环境是:Windows 7 + Qt 4.8.1 +Qt Creator 2.4.1

目录

  • 一、添加主窗口菜单
  • 二、添加菜单图标
  • 三、添加资源文件
  • 四、使用资源文件
  • 五、使用代码来添加菜单和图标

正文

一、添加主窗口菜单

1.新建Qt Gui应用,项目名称为myMainWindow,基类选择QMainWindow,类名为MainWindow

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

3.同样的方法,我们在文件菜单中添加“新建(&N)”子菜单,效果如下图所示。菜单后面的那个加号图标是用来创建下一级菜单的。

二、添加菜单图标

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

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

3.在编辑动作对话框中的图标后面的

黑色箭头下拉框可以选择使用资源还是使用文件,如果使用文件的话,那么就可以直接在弹出的文件对话框中选择本地磁盘上的一个图标文件。下面我们来讲述使用资源的方式,如果直接点击这个按钮就是默认的使用资源。现在我们先按下编辑动作对话框的确定按钮关闭它。

三、添加资源文件

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

2.我们向项目中添加新文件,模板选择Qt资源文件。如下图所示。然后将名称设置为myResources

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

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

四、使用资源文件

1.我们重新到设计模式打开新建菜单的编辑动作对话框,然后添加图标。在打开的选择资源对话框中,第一次可能无法显示已经存在的资源,可以按下左上角的绿箭头来更新显示。效果如下图所示。

2.我们点击这里需要的新建图标filenew.png,按下确定即可。现在按下Ctrl + R键运行程序,效果如下图所示。

五、使用代码来添加菜单和图标

1.对于添加的资源文件,在项目目录中可以看到,即myResources.qrc,使用写字板程序将其打开,可以发现它其实就是一个XML文档:

<RCC><qresourceprefix="/myImages"><file>images/filenew.png</file><file>images/fileopen.png</file><file>images/filesave.png</file><file>images/filesaveas.png</file><file>images/find.png</file></qresource>
</RCC>

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

// 创建新的动作
QAction *openAction = new QAction(tr("&Open"), this);
// 添加图标
QIcon icon(":/myImages/images/fileopen.png");
openAction->setIcon(icon);
// 设置快捷键
openAction->setShortcut(QKeySequence(tr("Ctrl+O")));
// 在文件菜单中设置新的打开动作
ui->menu_F->addAction(openAction);

这里添加图标时,就是使用的资源文件中的图标。使用资源文件,需要在最开始使用冒号,然后添加前缀,后面是文件的路径。在代码中使用文件菜单,就是使用其objectName。大家现在可以运行程序查看效果,当然这里也可以将Open改为中文。

结语

这一篇中主要讲解了如何使用资源文件,讲述了在设计模式和代码中两种使用方法。希望大家可以亲自练习一下本篇的内容,在后面的章节中,对于添加菜单和图标等操作将不再进行讲解。

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

  1. 【Qt入门第1篇】 基础(一)Qt开发环境的搭建和hello world

    导语 从这一篇我们正式开始Qt编程.本篇主要讲解Qt编程环境的搭建.为了适应大多数读者的需要,同时为了避免系统环境的不同而产生不必要的问题,这里选择使用Windows系统的Qt版本.因为在前面几十篇中 ...

  2. 【Qt入门第34篇】 网络(四)FTP(二)

    导语 前面讲述了一个最简单的FTP客户端程序的编写,这一节我们将这个程序进行扩展,使其可以浏览并能下载服务器上的所有文件. 环境:Windows Xp + Qt 4.8.5+QtCreator 2.8 ...

  3. 【Qt入门第11篇】 2D绘图(一)绘制简单图形

    导语 Qt中提供了强大的2D绘图系统,可以使用相同的API在屏幕和绘图设备上进行绘制,它主要基于QPainter.QPaintDevice和QPaintEngine这三个类.其中QPainter用来执 ...

  4. 【Qt入门第13篇】 2D绘图(三)绘制文字

    导语 Qt中除了绘制图形以外,还可以使用QPainter::darwText()函数来绘制文字,也可以使用QPainter::setFont()设置文字所使用的字体,使用QPainter::fontI ...

  5. 【Qt入门第31篇】 网络(一)Qt网络编程简介

    导语 从这一节开始我们讲述Qt网络应用方面的编程知识.在开始这部分知识的学习之前,大家最好已经拥有了一定的网络知识和Qt的编程基础.在后面的教程中我们不会对一个常用的网络名词进行详细的解释,对于不太了 ...

  6. 【Qt入门第36篇】 网络(六)UDP

    导语 这一节讲述UDP编程的知识.UDP(UserDatagram Protocol即用户数据报协议)是一个轻量级的,不可靠的,面向数据报的无连接协议.对于UDP我们不再进行过多介绍,如果你对UDP不 ...

  7. 【Qt入门第23篇】 数据库(三)利用QSqlQuery类执行SQL语句

    导语 SQL即结构化查询语言,是关系数据库的标准语言.前面两节中已经在Qt里利用QSqlQuery类执行了SQL语句,这一节我们将详细讲解该类的使用.需要说明,因为我们重在讲解Qt中的数据库使用,而非 ...

  8. 【Qt入门第17篇】 2D绘图(七)涂鸦板

    导语 通过前面几节的学习,大家应该已经对Qt中2D绘图有了一定的认识,这一节我们将应用前面讲到的内容,编写一个简单的涂鸦板程序,这一节只是实现最基本的鼠标画线功能. 环境:Windows Xp + Q ...

  9. 嵌入式学习之Qt入门第七篇

    恩恩,终于看对版本了~ 感觉代码看的差不多了,今天把代码里面以前不太明白的问题了解了下. 比如关于文件描述符(File Descriptor)的. fd=open("/dev/leds0&q ...

最新文章

  1. 5v可编程rgb接口_电脑的各个接口详解,不懂电脑的白小必备干货知识
  2. springboot @ConfigurationProperties
  3. cscript.exe自动启动解决方法分享
  4. windows远程连接报错--“发生身份验证错误。要求的函数不受支持”
  5. WPF对决Silverlight:为项目选择最佳技术
  6. 视觉平衡与物理平衡_设计中的平衡理论为什么这么重要?
  7. Android官方开发文档Training系列课程中文版:动画视图之应用场景
  8. 智能可穿戴迎来长续航焕新活力 出门问问TicWatch Pro 3即将国内上市
  9. SQL Server 2008安装和配置过程
  10. 将pdbqt文件转成SMILES文件
  11. 深度剖析Java数据结构之队列(一)——双端队列(ArrayDeque)
  12. 认真学习系列:计算机组成原理——哈工网课笔记
  13. auto_ptr自动资源管理器
  14. java web代码混淆_JAVA WEB 项目的代码混淆
  15. jquery第三章练习三(制作京东常见问题分类页面)
  16. Excel VBA单元格数据自增1
  17. 多少卡路里,我应该吃是错误的
  18. 制坯系列-Golang专题-chan
  19. OpenGL(十四)——Qt OpenGL纹理
  20. 在云服务器上部署的项目一直运可以怎么做

热门文章

  1. 在学校计算机协会的宣传标语,FS电脑协会宣传标语
  2. 著名数字藏品专家、数藏大会创始人高泽龙接受中国企业家杂志采访
  3. docker部署LTC v0.18.1版本开发网
  4. 超详细的Linux编程之UDP SOCKET全攻略(一文让你彻底了解)
  5. 设计师必备的PNG免抠素材网站,告别PS手动抠图~
  6. turtle库的介绍
  7. Nginx配置文件下载
  8. 使用Myeclipse搭建Maven项目
  9. Android 实现可循环,可轮播的viewpager
  10. 学会这个技能,也许你也能月薪过万!