2 QT—资料文件管理 动作使用设置快捷键

2023-11-17

图标文件下载:
https://wwa.lanzoui.com/iiZODwjcsbc

项目文件下载:
https://wwa.lanzoui.com/is9N5wjct3a

1. 创建主窗口菜单

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

在这里插入图片描述

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

在这里插入图片描述

2. 添加菜单图标

(1) Qt 中的一个菜单项被看做是一个 Action,在设计器下面的 Action 编辑器中可以看到刚才添加的“新建”动作,如图 3.3 所示。
在这里插入图片描述
(2) 双击 action_N 条目,会弹出编辑动作对话框,这里可以进行各项设置,比如可以设置动作的快捷键,点击一下快捷键后面的行编辑器,然后按下键盘上的 Ctrl + N,这样就可以将该菜单的快捷键设置为 Ctrl + N。如图 3.4 所示。
在这里插入图片描述

(3) 在编辑动作对话框中的图标后面的 在这里插入图片描述

黑色箭头下拉框可以选择使用资源还是使用
文件来设置图标,如果使用文件的话,那么就可以直接在弹出的文件对话框中选择本地磁盘 上的一个图标文件。如果直接单击这个按钮默认是使用资源。现在先按下编辑动作对话框的“OK”按钮关闭它。


使用资源文件管理

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

(1) 向项目中添加新文件,模板选择 Qt 分类中的 Qt Resource File,如图 3.5 所示。然后将名称设置为“myResources”。

在这里插入图片描述

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


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

3. 使用资源文件

(1) 重新到设计模式打开新建菜单的编辑动作对话框,然后添加图标。在打开的选择资源对话框中,第一次可能无法显示已经存在的资源,可以按下左上角的绿箭头 来更新显示。效果如图 3.7 所示。
在这里插入图片描述
(2) 点击这里需要的新建图标 filenew.png,按下“OK”按钮即可。现在按下 Ctrl + R 键运

行程序,效果如图 3.8 所示。
在这里插入图片描述

4. 使用代码来添加菜单和图标

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


images/filenew.png
images/fileopen.png
images/filesave.png
images/filesaveas.png
images/find.png

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

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 创建新的动作 打开
    QAction *openAction = new QAction(tr("&打开文件"), this);

    // 添加图标
    QIcon icon(":/myImages/images/fileopen.png");
    openAction->setIcon(icon);

    // 设置快捷键
    openAction->setShortcut(QKeySequence(tr("Ctrl+O")));

    // 在文件菜单中设置新的打开动作
    ui->menu_F->addAction(openAction);
}

MainWindow::~MainWindow()
{
    delete ui;
}

这里添加图标时,就是使用的资源文件中的图标。使用资源文件,需要在最开始使用冒 号,然后添加前缀,后面是文件的路径。在代码中使用文件菜单,就是使用其 objectName 属性。

(3) 现在运行程序查看效果。
在这里插入图片描述

思考二者不同?

思考题:使用资源文件和直接使用本地的图片文件,这两种方式有什么优缺点?

转解答:
https://blog.csdn.net/u011886336/article/details/89394756

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

2 QT—资料文件管理 动作使用设置快捷键 的相关文章

  • 调整 QML 图像显示尺寸

    我有一个带有嵌套的 QML 窗口RowLayout 在内排我有两个图像 来源 png这些图像的文件 故意 相当大 当我尝试设置height这些图像上的属性使它们变小 但它们仍然被画得很大 Desired Appearance Actual
  • Qt 计算和比较密码哈希

    目前正在 Qt 中为测验程序构建面向 Web 的身份验证服务 据我了解 在数据库中存储用户密码时 必须对其进行隐藏 以防落入坏人之手 流行的方法似乎是添加的过程Salt https en wikipedia org wiki Salt cr
  • QT 中只获取文件而不获取目录?

    当我这样做时 QDir myDir home some location QStringList filesList myDir entryList 它返回该位置内的文件和目录 但我只想要文件 并且这些文件可以具有任意扩展名 有任何想法吗
  • 当 QML 对象不可见时防止 QML 属性绑定?

    我正在开发一个具有大量属性绑定的 QML 应用程序 数百个对象被跟踪并以不同的形式显示 例如 Qt3D QCanvas 当我在应用程序的单独页面上时 x y 位置和相对大小的属性绑定仍在发生 我怎样才能阻止他们 我知道我可以根据属性是否可视
  • QSpinBox 输入 NaN 作为有效值

    我正在尝试扩展 QSpinBox 以能够输入 NaN 或 nan 作为有效值 根据文档 我应该使用 textFromValue valueFromText 和 validate 函数来完成此操作 但我无法让它工作 因为它仍然不允许我输入除数
  • 当我尝试构建 Qt 4.7.1 静态库时,“找不到 -ljscore”

    我尝试从最新的源构建静态 Qt 库 但出现以下错误 usr bin ld cannot find ljscore collect2 ld returned 1 exit status 如何解决这个问题呢 这是 Qt 构建系统中自 4 7 0
  • 在 Qt5 中,是否需要 Q_INVOKABLE 来从 QML 调用公共 QObject 函数?

    我刚刚意识到我可以调用暴露于 QML 的对象的几乎任何函数 现在我对 Q INVOKABLE 很好奇 Qt5docs http doc qt io qt 5 qtqml cppintegration exposecppattributes
  • 向 Qt 样式表添加特异性时丢失样式

    这是我的代码 const QString STYLE SHEET background color rgba x x x y border 1px solid gray border radius 0px border top 1px so
  • 如何创建用于 QML 的通用对象模型?

    我想知道是否有任何宏或方法如何将 Qt 模型注册为 QObject 的属性 例如 我有AnimalModel http doc qt io qt 5 qtquick modelviewsdata cppmodels html qabstra
  • 如何将图像显示为缩略图

    我有一个QTreeView显示硬盘驱动器和目录 我也有一个QListView显示图像文件如下 但我想将图像显示为缩略图 如下所示 My code mainWidget mainWidget QWidget parent QWidget pa
  • 为 Windows 98 编译 Qt

    我需要支持 Windows 98 Qt 文档声称这是可能的 但没有说明 Qt 4 6 的分布式二进制文件不能在 Win98 上运行 而且我采样的大多数 Qt 应用程序也不能在 Win98 上运行 对于几个确实在 98 上运行的应用程序 我询
  • 更改 Qt OpenGL 窗口示例以使用 OpenGL 3.3

    我正在尝试更改 Qt OpenGL 示例以使用更现代的 opengl 版本 330 似乎合适 所以我做了 在 main cpp 上设置版本和配置文件 设置着色器版本 更改着色器以使用统一 它现在构建没有任何错误 但我只看到一个空白窗口 我错
  • 与 Qt 项目的静态链接

    我有一个在 Visual Studio 2010 Professional 中构建的 Qt 项目 但是 当我运行它 在调试或发布模式下 时 它会要求一些 Qt dll 如果我提供 dll 并将它们放入 System32 中 它就可以工作 但
  • QFileDialog::getSaveFileName 和默认的 selectedFilter

    我有 getSaveFileName 和一些过滤器 我希望当用户打开 保存 对话框时选择其中之一 Qt 文档说明如下 可以通过将 selectedFilter 设置为所需的值来选择默认过滤器 我尝试以下变体 QString selFilte
  • 如何使QTableView类的restoreState()和saveState()正常工作?

    首先 我想说 我的问题已经在这里讨论过 并且这里是 https stackoverflow com questions 1163030 qt qtableview and horizontalheader restorestate 但答案并
  • 将 gnuplot 嵌入现有 QtWidget 中

    我正在用 C 创建一个 伪 实时绘图应用程序 使用 gnuplot 作为绘图后端 我的要求之一是绘图必须位于现有窗口内 而不是有一个单独的绘图窗口 gnuplot 默认为 Gnuplot 有一个选项可以指定 Qt 小部件 ID 这似乎适合我
  • Qml 模块未找到 CPP 类注册与新的 QML_ELEMENT r

    我尝试使用 Qt5 15 0 和新宏 QML ELEMENT 在 QML 中注册我的自定义 CPP 类 但找不到该模块 Qt Creater 帮助文件描述了 QML ELEMENT 的步骤 我也检查了 Qt 手册 但没有幸福的结局 http
  • 如何使用meta-toolchain-qt5构建Qt(带有QtWebEngine支持)?

    我正在尝试使用构建 Qtmeta toolchain qt5 但是当我通过这样做时poky glibc x86 64 meta toolchain qt5 cortexa7hf vfp vfpv4 neon toolchain 2 0 1
  • 从 Qt4 中的文本文件中逐字读取

    我想在 Qt4 中逐字读取一个文本文件 说实话我对它很陌生 我想在另一个文件中每行一个字写入 我可以在 C 中做到这一点 没有任何问题 但是当我尝试在 Qt4 中使用 ifstream 和 ofstream 时 我遇到了错误 这是我的 Qt
  • 如何在 QtQuick 2 中对 QML TableView 进行排序?

    我想使用 Qt 5 1 实现具有自定义角色的可排序 TableView 但我不知道当用户单击标题时该怎么做才能对其进行排序 在我的 Qt pro 文件中 我添加了 android ios blackberry qtHaveModule wi

随机推荐

  • Gitee初练 --- 问题合集(一)

    Gitee 一 Windows找不到gpedit msc请确定文件名是否正确的提示 二 windows 10 凭据无法保存 三 解决 git pull push 每次都要输入用户名密码的问题 一 Windows找不到gpedit msc请确
  • C++ 读写二进制文件

    描述 C 来读取二进制文件 二进制文件的格式可以多种多样 比如dat index等 还可以是自行定义的格式 C 来写二进制文件 一 读二进制文件 结构体定义及头文件 include
  • 38 匹配字符串——findall()方法

    文章目录 语法 案例 语法 findall 方法用于在整个字符串中搜索所有符合正则表达式的字符串 并以列表的形式返回 如果匹配成功 则返回包含匹配结构的列表 否则返回空列表 findall 方法的语法格式如下 re findall patt
  • css实现图片叠加的几种思路(记录笔记)

    背景 实现点击事件 触发原图的img透明度降低 成为透明背景 并且加一个不透明的原图 可以用于加水印 一个div覆盖几个样式 使用的是vue vue cli搭建项目 几种思路 1 切换背景样式 设置一个key 当div元素触发点击事件 di
  • (SUB)选择排序时间、空间复杂度

    基本思想 将一组数据分为两部分 前面是已排序部分 后面是未排序部分 初始状态可认为位置 0 为已排序部分 数组下标从0开始 其余为未排序部分 每一次都从未排序部分选择一个最小元素放在已排序部分的末尾 然后已排序部分增加一个元素 未排序部分减
  • 腾讯云微计算实践:从Serverless说起,谈谈边缘计算的未来

    欢迎大家前往云 社区 获取更多腾讯海量技术实践干货哦 作者 黄文俊 腾讯云高级产品经理 曾经历过企业级存储 企业级容器平台等产品的架构与开发 对容器 微服务 无服务器 DevOps等都有浓厚兴趣 由 腾讯云serverless团队 发布在
  • selenium版本不匹配

    window10解决selenium版本不匹配问题 如运行出现以下错误 File C Python37 lib site packages selenium webdriver chrome webdriver py line 73 in
  • 【Google测试之道】 第二章 软件测试开发工程师

  • 方法简单手把手教你,空闲时间在家剪辑视频,一天收入300多

    做一个视频剪辑号 不开玩笑 认真做一个月真的能做到1w 有不少人都不知道 我们平时在手机上刷到的横屏视频都是可以赚钱的 而且也可以不用露脸拍摄视频 下班在家也可以赚取一份额外收入 很多人就会有疑问了 不露脸 不拍摄视频怎么赚钱 其实做视频剪
  • 【netty】netty HashedWheelTimer 延时队列

    1 概述 想要研究这个是因为 Flink Flink 写入 Clickhouse 大对象直接进入老年代 导致OOM 遇到了这个问题 在这个问题中 我将时间轮改小了 时间轮 512改成16个 Netty中提供的HashedWheelTimer
  • 代码实现对selenium的驱动器WebDrive的配置

    1 条件 1 使用的浏览器是Microsoft Edge 2 简述过程 代码实现 1 pip 安装 2 下载 3 解压 4 运行 3 发现一个报错 1 原因 在给出代码之前 我发现一个报错 很离谱 且听笔者慢慢细说 首先 安装了seleni
  • 编译 - Make 命令教程 以及Makefile - 学习/实践

    1 应用场景 主要用于学习和使用make命令进行软件编译安装 2 学习 操作 1 文档阅读 Make 命令教程 阮一峰的网络日志 Make GNU Project Free Software Foundation 第21讲 如何使用脚本语言
  • 关系表的构成要素主键_数据库:关系型数据库的基本术语有哪些?

    一 关系 relation 关系就是二维表 二维表的名字就是关系的名字 二 属性 attribute 二维表中的每个列就称为一个属性 或叫字段 每个属性有一个名字 称为属性名 三 值域 domain 二维表中属性的取值范围称为值域 四 元组
  • 分治法篇:卷一:最简单的分治法应用例子

    2023年4月25日 周二早上 我想从最简单的分治法应用例子开始 而不是从经典的例子开始 用分治法求解数组中的最大值 纯享版 include
  • 《基于 Vue 组件库 的 Webpack5 配置》6.将字体库和图片等静态资料,编译后打包至指定文件夹

    参考 Rule generator filename package json 的配置如下 module exports module test png svg jpg jpeg gif i type asset resource gene
  • 【C语言-进阶】指针进阶

    1 字符指针 字符指针的基本使用略了 把常量字符串 abcdef 的首元素地址放在字符型指针p中 p中存储的就是字符a的地址 而因为他们是在内存中连续存储的 且字符串末尾有自动添加到 0 所以可以用printf形式打印出来 这时如果用指针p
  • C++复习笔记--STL的常见遍历、查找和排序算法的使用

    目录 1 STL常用算法的概述 2 常用遍历算法 2 1 for each 2 2 transform 3 常用查找算法 3 1 find 3 1 1 查找内置类型元素 3 1 2 查找自定义类型元素 3 2 find if 3 2 1 查
  • unity3d IK动画

    IK动画 反向动力学 Inverse Kinematics 就是反过来的呗 即用物体带动骨骼运动 IK动画绑定 void OnAnimatorIK int layerIndex 看向准星 if front sign null animato
  • bootstrap使用之stickUp(固定导航栏)

    1 stickUp是jQuery下的一个导航栏插件 当界面较长时 导航栏会固定在顶部 不会移动 如下图 2 废话少说 下载http www bootcss com p stickup 在里面有示例文档 只是注意看index的时候js写在下面
  • 2 QT—资料文件管理 动作使用设置快捷键

    图标文件下载 https wwa lanzoui com iiZODwjcsbc 项目文件下载 https wwa lanzoui com is9N5wjct3a 1 创建主窗口菜单 1 新建 Qt Widgets 应用 项目名称为 myM