【QT 5 +Linux下软件桌面快捷方式+qt生成软件创建桌面图标+学习他人文章+第二篇:编写桌面文件.desktop】

【QT 5 +Linux下软件桌面快捷方式+qt生成软件创建桌面图标+学习他人文章+第二篇:编写桌面文件.desktop】

  • 1、前言
  • 2、实验环境
  • 3、自我学习总结-本篇总结
    • 1、新手的疑问,做这件事目的
    • 2、了解.desktop
    • 3、三个关键目录以及文件编写
      • 1、目录:/opt/
      • 2、目录: /root/Desktop 或者 ~/Desktop
      • 3、目录: /usr/share/applications/
    • 4、桌面文件变成图标
  • 4、参照文章-感谢
  • 5、实验过程
      • 1、进入目录
      • 2、放入图标文件
      • 3、编写default.desktop文件
        • 解释如下:
          • 1:[Desktop Entry]
          • 2:Type=Application
          • 3:Name=test1_hello
          • 4:Exec=/opt/test/test1_hello
          • 5:Icon=/opt/test/default.png
          • 6:Comment=this is my test
          • 7:Terminal=false
      • 4、将整个文件夹拷贝到/opt/下
      • 5、右键将桌面文件运行
      • 6、验证运行
      • 解释说明:
  • 6、代码链接
  • 7、细节部分
      • 1、无法理解的部分。
      • 2 、桌面环境的安全限制
      • 3 、.desktop文件的正确性
      • 4、.desktop文件的可执行权限
  • 8、总结

1、前言

qt软件生成后,需要使用linuxdeployqt工具生产,才能放到其他电脑上运行,但是我们发现其实无法想win那样,直接点击exe一样,直接运行,也无法直接生成快捷方式,linux下,有自己方式,须要我们自己去编写这些。本篇为第二章,感兴趣想要了解全程细节,可以从第一章开始看。

【QT 5 +Linux下软件生成+qt软件生成使用工具+学习他人文章+第一篇:使用linuxdeployqt软件生成】

  • 第一篇:使用linuxdeployqt软件生成
  • 第二篇:桌面文件.desktop,文件编写与软件图标
  • 第三篇:打包生成安装的包(.deb)

2、实验环境

实验环境还是挺重要的,因为有时候,在你电脑上能运行的东西,在别人的电脑就不一定能运行,这一部分的原因就可能是实验版本不一样,另外也发现其他小伙伴,也会问些问题,之前有人大致环境装的和我差不多,当时是win的环境,结果编译遇到问题,就跑过来问是不是环境不对,这还是要具体问题具体分析的,当时看了看,发现是其他问题,总的来说,环境还是挺重要的。
系统环境:
环境问题还是要注意下的,不同环境下可能还真的可能不一样。
在这里插入图片描述

QT软件版本环境: Linux qt环境

在这里插入图片描述

3、自我学习总结-本篇总结

1、新手的疑问,做这件事目的

自开始学的时候,了解到要写.desktop文件,感觉很是麻烦,为啥要写这个文件,win下感觉就没这么麻烦,后来渐渐了解了,其实win下,也做了相关的事情,只不过工具都自动给你做了,而linux下,这些事情需要自己做,主要是编写这个名为“*.desktop”文件,找图片。第二个原因就是给别人使用的时候,不可能像第一章一样,在命令行下打开软件。
在这里插入图片描述

2、了解.desktop

开始自己作为新手的时候,确实不知道这个是个啥,去网上大概了解下。

在Linux系统中,使用Qt创建桌面图标通常意味着你需要创建一个桌面快捷方式(.desktop文件),该文件指向你的应用程序的可执行文件。这个过程包括编写一个.desktop文件,其中包含了启动应用程序所需的信息,比如应用程序的名称、执行命令、图标路径等。

大概分为四个步骤。

  1. 创建.desktop文件:使用linuxdeployqt工具后,会创建默认的一个这样文件
  2. 编辑.desktop文件:当然里面有些默认内容,需要自己更新和替换
  3. 使.desktop文件可执行:给文件运行权限
  4. 放置.desktop文件:我们想在桌面上直接点击图标,当然要放在桌面,另外给他人的还有目录需要知道。

3、三个关键目录以及文件编写

三个目录需要知道,另外还有目录编写。

1、目录:/opt/

“/opt/”是软件安装时,软件放置的默认目录,相当于win下,我们安装软件时,其实需要选择目录,你不选择时,软件会有个默认安装路径。linux下也是这样,所以我们需要知道。
如下我们可以看到,根路径下,的opt内,其他软件也是安装在这里。
在这里插入图片描述

2、目录: /root/Desktop 或者 ~/Desktop

编写完成.desktop文件后,需要将这个.desktop文件放置在合适的位置,以便它可以被桌面环境识别并显示。通常,需要将其放置在~/Desktop(个人桌面),方便在桌面上直接点击。

3、目录: /usr/share/applications/

编写完成.desktop文件后,需要将这个.desktop文件放置在合适的位置,以便它可以被桌面环境识别并显示。通常,需要将其放置在/usr/share/applications(所有用户)目录中,可以让其他人使用。

4、桌面文件变成图标

自己编写,准确来说,改了好多遍后,发现放在桌面上的.desktop就是不变图标,后来查到,有可能系统限制,需要,允许下。
在这里插入图片描述
之后才会变成图标
在这里插入图片描述

参考文章:https://blog.csdn.net/weixin_43357860/article/details/115272304
在这里插入图片描述

4、参照文章-感谢

学习他人文章,至少有个大致规划,知道哪步骤该什么,如下,为自己参照的文章。
https://blog.csdn.net/zyhse/article/details/106381937
在这里插入图片描述

5、实验过程

根据参考文章,这块都是一些解释,操作上也有很多细节,前后相关性。
在这里插入图片描述

1、进入目录

回到上篇说的目录,你自己根据实际情况,进入到你生成软件的目录。如下为自己的目录,其实默认文件如下。
在这里插入图片描述

2、放入图标文件

按照上篇文章所说的,可以上网找一些图标文件。
需要准备在显示图标,可以在相关网站上下一个。

相关链接:https://www.iconfont.cn/
在这里插入图片描述
或者第一篇博文中,已经下载过了,从工程里拿过来,图片改个名字。

在这里插入图片描述
这样图标我们就准备好了
在这里插入图片描述

3、编写default.desktop文件

我们右键,打开终端,然后在终端里编写这个文件。
在这里插入图片描述

编写内容如下:

[Desktop Entry]
Type=Application
Name=test1_hello
Exec=/opt/test/test1_hello 
Icon=/opt/test/default.png
Comment=this is my test
Terminal=false
解释如下:
1:[Desktop Entry]

这行表明文件是一个桌面快捷方式配置文件的开始。所有.desktop文件都以此行开始。

2:Type=Application

指定这个桌面条目的类型。Application意味着这个条目是一个应用程序。其他可能的类型包括Link(链接)和Directory(目录)。

3:Name=test1_hello

定义了快捷方式或应用程序的名称,这是在菜单和桌面上显示给用户的名称。这里的应用名称是test1_hello。

注意:后来打包时发现命名,软件命名不能带有数字字符和“_”,会报错,不过至少不是本章要解决问题。

4:Exec=/opt/test/test1_hello

指定启动应用程序时执行的命令或可执行文件的路径。这里,应用程序的执行文件位于/opt/test/test1_hello。

5:Icon=/opt/test/default.png

定义应用程序图标的路径。当快捷方式被添加到桌面或应用程序菜单时,会显示这个图标。此例中,图标文件位于/opt/test/default.png。

6:Comment=this is my test

提供了关于这个快捷方式或应用程序的额外信息或注释,这个信息可能会在鼠标悬停在图标上时显示(取决于桌面环境)。这里的注释是this is my test。

7:Terminal=false

指定应用程序是否应该在终端窗口中运行。false意味着应用程序将在图形界面环境中运行,不需要打开一个终端窗口。如果设置为true,则应用程序会在一个新的终端窗口中启动,这通常用于控制台应用程序。

以上文件编写与解释。

4、将整个文件夹拷贝到/opt/下

编写完文件,保存退出后,我们还在当前目录下,按照顺序操作指令,我们运行以下命令。

 1133  vim default.desktop 1134  cat default.desktop 1135  ls1136  cd ../1137  ls1138  sudo mv test /opt/1139  sudo chmod 777 /opt/test/default.desktop 1140  cp /opt/test/default.desktop  /usr/share/applications/1141  sudo cp /opt/test/default.desktop  /usr/share/applications/1142  sudo cp /opt/test/default.desktop  ~/Desktop/

命令行解释

1133 vim default.desktop //编辑桌面文件
1134 cat default.desktop //查看桌面文件内容
1135 ls //查看文件
1136 cd …/ //返回上层
1137 ls
1138 sudo mv test /opt/ //将整个文件夹放到根目录下的opt文件夹下
1139 sudo chmod 777 /opt/test/default.desktop //给桌面文件权限
1140 cp /opt/test/default.desktop /usr/share/applications/ //将桌面文件放到/usr/share/applications/目录下
1141 sudo cp /opt/test/default.desktop /usr/share/applications/ //将桌面文件放到/usr/share/applications/目录下 需要sudo权限
1142 sudo cp /opt/test/default.desktop ~/Desktop/ 将桌面文件放到~/Desktop/ 目录下 也就是桌面上

如下为我自己时间操作情况
在这里插入图片描述

5、右键将桌面文件运行

如果第四步操作没有问题的话,桌面上应该出现一个文件了。
在这里插入图片描述
然后我们右键点击图标,点击“允许启动”。它就会变成图标了。
在这里插入图片描述

6、验证运行

点击图标,没什么问题,应该可以运行起来。
在这里插入图片描述

解释说明:

这里最关键是编写文件和将文件放到对应目录下,那为啥要放到opt这个根目录下,后来打包的时候就明白了,软件默认安装路径就是这个,所以上述步骤,相当于,我们手动模拟了,工具“dpkg”,也就是安装包工具,自动帮我们安装位置的一个过程。你会发现后需要写的时候,我们也要将第4步那些命令写成文件。

6、代码链接

工程文件:https://download.csdn.net/download/qq_22146161/88865906

7、细节部分

1、无法理解的部分。

其实在参考文章中,说到的有些东西还是无法理解,需要通过长时间使用,才能渐渐理解。
在这里插入图片描述

2 、桌面环境的安全限制

出于安全考虑,一些桌面环境可能限制了直接执行.desktop文件的能力,特别是当它们位于用户的~/Desktop目录下时。这种情况下,用户需要通过右键菜单选择执行,而不能通过双击直接启动。查看你的桌面环境的文档,了解是否有相关的安全设置,并学习如何调整这些设置以满足你的需求。
这块自己还需要查查,自己桌面的必须要设置,说明有些地方需要配置下,或者哪里需要改动的,后面找到在一点点加入。

3 、.desktop文件的正确性

桌面文件,需要多次再次确认.desktop文件,需要确认内容是否完全正确,特别是Exec、Type、Name等字段。任何小错误都可能导致桌面环境无法正确处理文件。自己在这个过程中,看我的步骤是一次就过了,其实我自己练习了很多次,才渐渐明白如何编写。
如下,可以看到一个“/”斜杠,都会影响到。
在这里插入图片描述

4、.desktop文件的可执行权限

这块不必再说了,没权限,是指定运行不了。

8、总结

细微之处出魔鬼,勤加练习吧~~~!

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

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

相关文章

【鸿蒙 HarmonyOS 4.0】开发工具安装

一、准备开发环境 1.1、安装IDE 鸿蒙应用开发需要使用配套的IDE——HUAWEI DevEco Studio。 DevEco Studio基于IntelliJ IDEA Community(IDEA社区版)构建,为鸿蒙应用提供了一站式开发环境,集成了开发、运行、调试以及发布应用的…

【leetcode刷题之路】面试经典150题(3)——哈希表+区间

文章目录 5 哈希表5.1 【哈希表】赎金信5.2 【数学】同构字符串5.3 【数学】单词规律5.4 【哈希表】有效的字母异位词5.5 【哈希表】字母异位词分组5.6 【双指针】两数之和5.7 【数学】快乐数5.8 【哈希表】219. 存在重复元素 II5.9 【数学】最长连续序列 6 区间6.1 【数学】汇…

Stable Diffusion 模型分享:AstrAnime(Astr动画)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五 下载地址 模型介绍 AstrAnime 是一个动漫模型,画风色彩鲜明,擅长绘制漂亮的小姐姐。 条目内容类型大模型…

fastjson解析自定义get方法导致空指针问题

背景 为了在日志中把出入参打印出来,以便验证链路和排查问题,在日志中将入参用fastjson格式化成字符串输出,结果遇到了NPE。 问题复现 示例代码 public static void main(String[] args) {OrganizationId orgId new OrganizationId();N…

规模化强化学习 — 多任务强化学习

1 简述 1.1 单任务强化学习(STRL) 在单任务强化学习中,一个无人机的AI系统可能被训练来执行特定的任务,比如自主导航。在这个任务中,无人机需要学习如何有效地从起点飞行到终点,并避开障碍物。 举例&#…

【Java多线程】分析线程加锁导致的死锁问题以及解决方案

目录 1、线程加锁 2、死锁问题的三种经典场景 2.1、一个线程一把锁 2.2、两个线程两把锁 2.3、N个线程M把锁(哲学家就餐问题) 3、解决死锁问题 1、线程加锁 其中 locker 可以是任意对象,进入 synchronized 修饰的代码块, 相当于加锁&…

Java SourceDataLine 播放音频

Java SourceDataLine 播放音频 1 依赖2 接口3 实现4 测试 项目Value音频格式 添加依赖*.wav(JDK 原生支持)*.pcm(JDK 原生支持)*.au(JDK 原生支持)*.aiff(JDK 原生支持)*.mp3mp3spi.jar*.flacjflac-codec.jar 1 依赖 <dependency><groupId>com.googlecode.soundl…

⭐北邮复试刷题LCR 052. 递增顺序搜索树__DFS (力扣119经典题变种挑战)

LCR 052. 递增顺序搜索树 给你一棵二叉搜索树&#xff0c;请 按中序遍历 将其重新排列为一棵递增顺序搜索树&#xff0c;使树中最左边的节点成为树的根节点&#xff0c;并且每个节点没有左子节点&#xff0c;只有一个右子节点。 示例 1&#xff1a; 输入&#xff1a;root [5,…

DataX - 全量数据同步工具

前言 今天是2024-2-21&#xff0c;农历正月十二&#xff0c;相信今天开始是新的阶段&#xff0c;尽管它不是新的周一、某月一日、某年第一天&#xff0c;尽管我是一个很讲究仪式感的人。新年刚过去 12 天&#xff0c;再过 3 天就开学咯&#xff0c;开学之后我的大学时光就进入了…

TypeScript01:安装TypeScript

一、TypeScript 官方网站&#xff1a;https://www.tslang.cn/docs/index.html 练习场&#xff1a;https://www.typescriptlang.org/zh/play 好处&#xff1a; 强类型语言&#xff0c;对JS弱类型的一个良好补充&#xff1b;TS利于大型项目团队合作&#xff0c;可以一定程度…

这五个软件测试工具,测试工程师必备

在软件开发过程中&#xff0c;软件测试是确保软件质量和稳定性的关键环节。为了帮助开发人员和测试团队更好地完成这一任务&#xff0c;市面上涌现出众多软件测试工具。本文将盘点五个备受推崇的软件测试工具&#xff0c;它们各具特色&#xff0c;适用于不同的测试场景。 Test…

ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整

文章目录 ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整获取音频长度pydub获取音频长度获取时长精确到秒格式设定 mutagen获取音频长度 调整音量视频音量调整注意事项 ChatGPT实战100例 - (17) 用ChatGPT实现音频长度测量和音量调整 老王媳妇说上次那个pip挺好…

深度学习的学习笔记帖子2

人脸数据集的介绍&#xff1a; https://zhuanlan.zhihu.com/p/362356480 https://blog.csdn.net/bjbz_cxy/article/details/122210641 CASIAWebFace人脸数据集等的github&#xff1a; https://github.com/deepinsight/insightface/blob/master/recognition/datasets/README.md…

蓝桥杯基础知识点9 stack、queue、priority_queue

蓝桥杯基础知识点9 stack、queue、priority_queue 01 stack的定义和结构 stack是一种后进先出&#xff08;LIFO&#xff09;的数据结构&#xff0c;头文件<stcak>。 template <class T, class Container deque<T>> class stack; T&#xff1a;存储在stack…

《VitePress 简易速速上手小册》第7章 高级功能与动态内容(2024 最新版)

文章目录 7.1 动态路由与 API 集成7.1.1 基础知识点解析7.1.2 重点案例&#xff1a;技术博客7.1.3 拓展案例 1&#xff1a;电商网站7.1.4 拓展案例 2&#xff1a;事件管理网站 7.2 状态管理与 Vuex 使用7.2.1 基础知识点解析7.2.2 重点案例&#xff1a;用户认证系统7.2.3 拓展案…

力扣精选算法100道——Z字形变换(模拟专题)

目录 &#x1f388;了解题意 &#x1f388;算法原理 &#x1f6a9;先处理第一行和最后一行 &#x1f6a9;再处理中间行 &#x1f388;实现代码 &#x1f388;了解题意 大家看到这个题目的时候肯定是很迷茫的&#xff0c;包括我自己也是搞不清楚题目什么意思&#xff0c;我…

memcpy和strcat的区别

memcpy 函数&#xff1a; memcpy 函数用于在内存之间复制一定数量的字节。memcpy 是按字节进行复制的&#xff0c;可以用于复制任意类型的数据&#xff0c;不仅限于字符串。memcpy 不会自动添加字符串结束符号 \0&#xff0c;因此在复制字符串时&#xff0c;需要确保复制的字节…

喝点小酒-胡诌“编程语言学习”

今天&#xff0c; 与一个小哥们儿&#xff08;学习计算机科学与技术专业的&#xff0c;我儿子&#xff0c;这是真的&#xff09;一块儿吃饭&#xff08;这顿饭&#xff0c;在家里吃的&#xff0c;吹个牛哈&#xff0c;我做的&#xff0c;三个荤菜、一个素材、一个汤、主食米饭 …

约瑟夫经典问题C++,STL容器queue解法

题目&#xff1a; Description n 个人围成一圈&#xff0c;从第一个人开始报数,数到 m 的人出列&#xff0c;再由下一个人重新从 1 开始报数&#xff0c;数到m 的人再出圈&#xff0c;依次类推&#xff0c;直到所有的人都出圈&#xff0c;请输出依次出圈人的编号。 注意&…

[linux]进程间通信(IPC)———共享内存(shm)(什么是共享内存,共享内存的原理图,共享内存的接口,使用演示)

一、什么是共享内存 共享内存区是最快的&#xff08;进程间通信&#xff09;IPC形式。一旦这样的内存映射到共享它的进程的地址空间&#xff0c;这些进程间数据传递不再涉及到内核&#xff0c;换句话说是进程不再通过执行进入内核的系统调用来传递彼此的数据。注意&#xff1a;…