Linux下为可执行文件添加图标

7 篇文章 1 订阅

      Ubuntu 18.04上使用Qt5.14.2创建一个简单的Qt Widgets项目test,添加2个Push Button按钮,点击分别获取github和csdn地址,在mainwindow.cpp中添加的代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <string>
#include <iostream>
#include <QMessageBox>

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

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


void MainWindow::on_pushButton_github_addr_clicked()
{
    static const std::string addr{"https://github.com/fengbingchun"};

    std::cout << "github add: " << addr << "\n";

    QMessageBox::information(nullptr, "GitHub Addr", QString::fromStdString(addr), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}

void MainWindow::on_pushButton_csdn_addr_clicked()
{
    static const std::string addr{"https://blog.csdn.net/fengbingchun"};

    std::cout << "csdn addr: " << addr << "\n";

    QMessageBox::information(nullptr, "CSDN Addr", QString::fromStdString(addr), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
}

      编译test,通过run_test.sh脚本执行:此脚本内容如下:

#! /bin/bash

LD_LIBRARY_PATH=/home/spring/Qt5.14.2/5.14.2/gcc_64/lib /home/spring/GitHub/test/build-test-Desktop_Qt_5_14_2_GCC_64bit-Release/test

      执行结果如下图所示:

      存在的问题
      1.左侧栏显示没有图标,不便于区分;
      2.可执行程序test只能通过终端执行,且可执行程序没有显示图标,双击无法运行。

      解决左侧栏不显示图标的问题
      1.使用ubuntu中现有的图标,如/usr/share/icons/hicolor/128x128/apps/display-im6.q16.png;
      2.打开工程的mainwindow.ui文件,属性中的"windowIcon",添加display-im6.q16.png图标,重新编译,再次运行,左侧栏即可显示图标,如下图所示:

      解决可执行程序显示图标并双击可执行的问题
      1.创建desktop文件(desktop entry)即桌面启动器(Desktop Launcher),如test.desktop,内容如下:

[Desktop Entry]
Name=test
Exec=/home/spring/GitHub/test/build-test-Desktop_Qt_5_14_2_GCC_64bit-Release/run_test.sh
Icon=/usr/share/icons/hicolor/128x128/apps/display-im6.q16.png
Type=Application
Terminal=true
Name[en]=test

      2.为test.desktop添加可执行权限(sudo chmod +x test.desktop);
      3.将test.desktop拷贝到/usr/share/applications目录下;
      4.第一次双击test.desktop会弹出对话框"Untrusted application launcher",点击"Trust and Launch",即可运行,结果如下图所示:

     
      1.双击/usr/share/applications下的test.desktop即可运行程序;
      2.test.desktop文件可拷贝到任何目录下,双击都可运行:我是以spring用户登入,如果把test.desktop拷贝到具有root用户的目录下,如build-test-Desktop_Qt_5_14_2_GCC_64bit-Release目录下,双击可能无法运行,会提示"Untrusted application launcher",此时,执行"sudo  chown -R spring:spring build-test-Desktop_Qt_5_14_2_GCC_64bit-Release",将目录所有者由root调整为spring后双击即可运行;
      3.可通过快速启动器启动,即在搜索框中搜索test,如下图所示:也可将其添加到左侧栏,选中点击"Add to Favorites"即可

      4.若双击desktop文件无反应,可能的原因
      (1).desktop文件是否有可执行权限;
      (2).desktop文件中指定的Exec和Icon是否路径正确;
      (3).若Exec指定的可执行文件依赖动态库,此时Exec可以直接指定为可运行的shell脚本,而非可执行程序.

      .desktop文件介绍
      .desktop文件只是一个用于在Linux中启动应用程序的快捷方式。如果没有.desktop文件,你的应用程序将不会显示在"应用程序(Show Applications)"菜单中,并且无法使用启动器启动,只能通过终端执行它。
      .desktop文件是一个简单的文本文件,其中保存有关程序的信息。它通常放置在"~/.local/share/applications"(对于特定于用户的应用程序)或"/usr/share/applications/"(对于系统范围内安装的应用程序)中.
      在Linux中,可执行程序显示图标(icon)是在/usr/share/applications目录下的.desktop文件中设置的。将选择的图标存放在/usr/share/icons/hicolor对应大小的apps目录中。可以选择不同尺寸的图标。支持文件后缀名为:.png,.svg等

      .desktop文件中的字段(Keys):仅Type和Name是必需的,其它为可选的
      1.Type:定义了3种类型的桌面条目(desktop entry),可指定为Application、Link、Directory
      (1).Application:定义如何启动应用程序;
      (2).Link:定义URL的快捷方式;
      (3).Directory:定义应用程序菜单中子菜单的外观;
      2.Name:应用程序的名字;
      3.Version:该desktop文件所遵循的桌面条目规范的版本;并不是应用程序的版本;
      4.Comment:用于工具(tooltip)提示,旨在包含任何有用的附加信息;该值不应与"Name"和"GenericName"的值重复;
      5.Path:如果条目的类型为Application,则为运行程序的目录;
      6.Exec:要执行的程序,可能带有参数;
      7.Icon:用于显示此条目的图标的名称;如果名称是绝对路径,则将使用给定的文件;如果名称不是绝对路径,则将使用图标主题规范(Icon Theme Specification)中描述的算法来定位图标;
      8.Terminal:程序是否在终端中运行;
      9.GenericName:此应用程序提供的功能;Name、GenericName和Comment通常包含组合形式的冗余值,应避免这种情况。

      有些字段可能已被弃用,可使用"desktop-file-validate"命令验证.desktop文件:将提供非常详细且有用的警告和错误信息,如无误将不会输出任何信息。

      更详细的字段介绍可参考:desktop-entry-spec

      Icon:以下命令对所有图像操作都是通用的,并不仅针对图标
      1.可使用convert命令将不支持的图标转换为支持的格式;
      2.可使用identify命令查看图像的大小。

      GitHubhttps://github.com/fengbingchun/Qt_Test

  • 20
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值