【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.pswp.cn/news/696092.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696092.shtml
英文地址,請注明出處:http://en.pswp.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;…