ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Ubuntu安装Qt后找不到图标?手动创建.desktop快捷方式全解析

Ubuntu安装Qt后找不到图标?手动创建.desktop快捷方式全解析 用Ubuntu装Qt十个人里至少有七八个会卡在同一个地方安装包下载好了软件也装完了桌面却找不到图标只能一脸懵地在终端里敲命令启动。这个坑我踩过不止一次后来帮同事配环境也反复遇到索性把整套流程和排查思路整理成一篇文章从选安装包开始到图标正常显示全部走一遍你照着做基本不会再被这个问题卡住。这篇文章适合刚接触Linux、准备用Qt做开发的同学也适合那些已经装了Qt但图标“消失”不知道怎么解决的开发者。我会把网上很少讲透的两个关键点展开说一是为什么官方安装包装完不给你图标二是怎么手动把图标补回来。1. 安装前先想清楚用apt还是官方离线包1.1 两种安装方式的差异对比在Ubuntu上装Qt主要有两条路一条是直接用apt装另一条是去官网下载离线安装包。很多人图省事上来就是一条命令sudo apt install qtcreator qtbase5-dev这个方式确实快装完在应用菜单里就能看到Qt Creator的图标看起来什么问题都没有。但等你真的开始写项目就会发现它有两个硬伤。第一apt仓库里的Qt版本通常比较旧Ubuntu 20.04自带的还是Qt 5.12系列很多新特性用不上第二这种方式装的Qt库里往往缺少像Serial Port、Charts这类常用模块等你需要的时候还得费劲去找对应的开发包。另外apt装的Qt Creator不带你需要的完整Qt库经常会出现头文件找不到、模块缺失这类问题。官方离线安装包就完全不一样了。它自带完整的Qt库、Qt Creator IDE、维护工具MaintenanceTool组件想勾哪个勾哪个而且是独立安装到自定义目录不影响系统里其他软件依赖的Qt版本。唯一的“缺点”是装完后没有快捷方式图标不显示——这恰恰是本文要解决的痛点。1.2 下载Qt离线安装包的正确姿势下载路径方面现在5.15版本和6.x版本的安装包都在Qt官网的下载页面历史版本在archive.qt.io这个归档地址。注意下载linux版本的安装包时要看清楚文件名里的平台标识我们用的是x86_64架构对应的是qt-opensource-linux-x64-5.x.x.run这类名字的文件。我实测下来对大多数人来说5.14.2和5.15.2两个版本是最稳妥的选择。5.14.2是最后一个对开源用户完全开放的长期支持版本启动速度、稳定性和中文社区资料都比较好5.15.2功能更新但需要注册Qt账号才能下载安装。新项目用5.15.2老项目或者纯学习用5.14.2基本不会出大问题。下载完成后强烈建议先校验文件完整性。SHA256校验码在下载页面旁边有校验命令是这样的echo 下载页面给的哈希值 文件名.run | sha256sum -c -这步虽然啰嗦但能防止下载过程中文件损坏导致安装器无法运行我见过好几次装到一半报错的情况最后排查下来都是下载包不完整。1.3 安装前的系统依赖准备这个步骤最容易被忽略但恰恰是后面一堆莫名其妙问题的根源。很多人下载好.run文件双击毫无反应或者运行时提示缺少某个库文件多半是系统基础依赖没装齐。我建议在正式安装之前先把这些依赖一次性装好sudo apt update sudo apt install build-essential libgl1-mesa-dev libglu1-mesa-dev \ libxcb-xinerama0 libxcb-cursor0 libxkbcommon-x11-0 \ libxcb-icccm4 libxcb-image0 libxcb-keysyms1 \ libxcb-render-util0 libxcb-shape0 libxcb-xfixes0解释一下这些包是干什么的。build-essential包含gcc、g、make等编译工具链没有它你连helloworld都编译不了。libgl1-mesa-dev和libglu1-mesa-dev是OpenGL的开发库Qt的很多图形界面组件依赖它。后面那一串libxcb-*都是X11协议相关的客户端库Qt在X11环境下运行需要这些动态库。如果你用的是Wayland情况又略有不同但目前绝大多数Ubuntu发行版默认还是X11先把这些装好是通用做法。依赖装完之后继续做一件很多人忽略的事确认网络环境正常。Qt安装包在安装过程中如果需要登录账号或者下载额外组件对网络有要求确保当前网络能正常访问外网否则容易卡在登录或组件下载环节。2. 干净利落的Qt安装过程记录2.1 交互式安装五步走准备工作做完开始正式的安装。先给安装包加上执行权限chmod x qt-opensource-linux-x64-5.15.2.run然后重点来了必须在图形环境下的终端里运行不要在纯命令行SSH会话里跑。安装器是Qt写的图形程序需要X11/Wayland环境才能显示窗口。./qt-opensource-linux-x64-5.15.2.run如果前面点击没反应的用这个方式在终端里运行能看到具体的报错信息。安装器打开后界面是英文的流程基本是固定的欢迎页点击Next。5.14.2及以上版本需要登录Qt账号没有就去官网注册一个不需要付费。这一步常被忽略有人以为必须购买许可证其实开源版用邮箱注册后就能继续。选择安装路径。我建议装到/opt/Qt5.15.2因为这个目录是系统级应用的标准位置权限管理清晰。注意路径中不要出现中文和空格否则后面写快捷方式时容易踩坑。组件选择。这一步是安装的重头戏默认勾选的项目不够用我建议至少检查这几块Qt 5.15.2目录下勾选Desktop gcc 64-bit这是Linux桌面开发的核心组件。Developer and Designer Tools目录下勾选Qt Creator和Qt Creator源码还有Qt Debugger Tools。如果你做串口、网络或图表开发还要在Qt 5.15.2下展开对应模块比如勾选Qt Serial Port、Qt Charts、Qt Network等否则后面编译时就会报“unknown module(s) in qt: serialport”。勾选完成后点击Install等待进度条跑完。整个安装大概需要几分钟到十几分钟取决于组件数量和磁盘速度。安装完成的提示界面出现后先别急着关终端进入验证环节。2.2 安装后的三个验证动作第一个动作是确认安装目录结构正常。进入安装目录看一眼ls /opt/Qt5.15.2正常情况下会有5.15.2版本库目录、Tools目录里面是Qt Creator和一个MaintenanceTool文件。缺任何一个都说明安装不完整建议重新安装。第二个动作是验证Qt Creator能否正常启动。直接运行Qt Creator的可执行文件/opt/Qt5.15.2/Tools/QtCreator/bin/qtcreator这里如果报错提示缺少某个.so库先用ldd排查ldd /opt/Qt5.15.2/Tools/QtCreator/bin/qtcreator | grep not found看到“not found”的就是缺失的库去找对应的Ubuntu包装上就行。大部分情况下前面装好的libxcb-*系列依赖已经能解决启动问题。第三个动作是验证Qt库能否正常编译。打开Qt Creator后新建一个Qt Widgets Application工程选择Desktop套件直接编译运行。能弹出窗口、能构建成功说明整个Qt环境是通的。到这一步安装本身就算全部完成了。2.3 顺手配置环境变量安装完Qt最好把环境变量配好不然后面命令行编译时要到处找路径。编辑~/.bashrc文件在末尾追加export QTDIR/opt/Qt5.15.2/5.15.2/gcc_64 export PATH$QTDIR/bin:$PATH export LD_LIBRARY_PATH$QTDIR/lib:$LD_LIBRARY_PATH保存后执行source ~/.bashrc生效。这里解释一下三个变量的作用QTDIR是Qt库的根目录很多工具链会读取它PATH加的是qmake、uic、moc等命令行工具LD_LIBRARY_PATH指向动态库目录程序运行时能找到Qt的.so文件。对于初学者尤其容易忽略的就是最后一个它经常导致编译好的程序换个终端就运行不了。3. 图标不显示的根因官方安装包少做了什么3.1 为什么装完找不到图标这是整个安装过程中最让人抓狂的一环明明安装器显示Successful应用菜单里却搜不到Qt Creator桌面上也没有图标。原因远没有你想的那么复杂——官方.run安装包从头到尾只做了两件事解压文件、写入配置。它根本不会在GNOME的应用菜单里注册快捷方式。Linux桌面系统的应用菜单和Windows的“开始菜单”机制不一样GNOME桌面环境是通过扫描特定的.desktop文件来展示应用图标的。这些文件放在/usr/share/applications或~/.local/share/applications目录下每个文件对应一个应用包含应用名、执行命令、图标路径等信息。Qt的安装器为了保持通用性没有帮你生成这个文件于是应用菜单里自然什么都看不到。同时需要明确一点Qt的图标缺失和Windows下的“桌面图标不显示”完全是两回事后者通常是缓存或资源管理器问题。Linux这里就是单纯的没有快捷方式入口。搞清楚这一点解决方案就清晰了——帮Qt Creator补一个.desktop文件。3.2 你可能遇到的其他“不显示图标”情况除了应用菜单里找不到图标我在实际使用中还见过另外几种很像的“图标不显示”很多新手容易混淆这里一并说明。第一种是Qt Creator打开了但应用菜单或桌面的图标是空白的像一个透明文件。这通常是因为图标文件路径写错或者.desktop文件里的Icon字段指向了一个不存在的文件。解决办法是在.desktop里填上绝对路径并在添加之后验证文件确实存在。第二种是双击.desktop快捷方式没有任何反应但通过终端进入目录直接运行qtcreator却能正常打开。这八成是Exec字段的路径没写对或者快捷方式文件本身没加执行权限。第三种情况最隐蔽——Qt Creator界面打开了但工具栏图标、按钮图标全部变成空白方块或什么都不显示。这跟快捷方式无关是系统图标主题或Qt自带图标资源出了问题通常可以通过安装qt5-quickcontrols2、qt5-gtk-platformtheme等包来解决或者检查是不是装了第三方图标主题导致兼容性问题。所以当别人跟你说“Qt图标不显示”一定要先问清楚是哪种不显示。下文给出的解决方案就是围绕第一种和第二种情况展开的这也是最高频的问题。4. 三种手工补图标方案操作细节全解析4.1 方案一在应用菜单里创建.desktop快捷方式推荐这个方案是我日常给开发机配置环境时最常用的一次配置长期有效而且能在GNOME应用菜单里直接搜索到Qt Creator。第一步确定可执行文件的真实路径。Qt离线包安装的Qt Creator默认在安装目录下的Tools目录里比如/opt/Qt5.15.2/Tools/QtCreator/bin/qtcreator。注意不同Qt版本或者自定义安装目录时路径会变化务必先确认你的真实路径。第二步确定图标文件路径。Qt Creator自带图标在安装目录的图标资源里通常在/opt/Qt5.15.2/Tools/QtCreator/share/icons/hicolor/512x512/apps/QtCreator.png。如果这个路径不存在就去hicolor目录下面找其他分辨率或者用find命令全局搜一下find /opt/Qt5.15.2 -name QtCreator.png -type f 2/dev/null第三步创建.desktop文件。推荐放在当前用户的~/.local/share/applications目录这样只对当前用户生效不会影响系统其他用户也不用sudo。真正的开发机规范是放这个目录如果为了多用户共享访问再考虑放/usr/share/applications。mkdir -p ~/.local/share/applications vim ~/.local/share/applications/qtcreator.desktop写入以下内容[Desktop Entry] TypeApplication NameQt Creator CommentQt Creator IDE Exec/opt/Qt5.15.2/Tools/QtCreator/bin/qtcreator %F Icon/opt/Qt5.15.2/Tools/QtCreator/share/icons/hicolor/512x512/apps/QtCreator.png Terminalfalse CategoriesDevelopment;IDE;Qt; StartupNotifytrue StartupWMClassqtcreator第四步给文件加执行权限并刷新桌面数据库chmod x ~/.local/share/applications/qtcreator.desktop update-desktop-database ~/.local/share/applications第五步验证。执行gtk-launch qtcreator测试快捷方式能否启动应用。正常情况下应用菜单立刻就能搜索到“Qt Creator”点进去桌面dock栏上也会出现对应图标。4.2 方案二命令行的软链接和启动脚本如果你不喜欢图形菜单操作或者你用的是比较精简的窗口管理器比如i3、openbox那方案二更适合你。软链接的做法很简单把可执行文件链接到PATH目录下就可以直接在终端里输入qtcreator启动sudo ln -s /opt/Qt5.15.2/Tools/QtCreator/bin/qtcreator /usr/local/bin/qtcreator此后的终端操作就是qtcreator这个方案适合开发习惯偏向命令行的用户。因为软链接指向的是原始可执行文件Qt Creator的任何更新在替换安装包时只要路径不变软链接都不用重做。如果你还想在桌面上快速启动可以创建一个启动脚本~/Desktop/qtcreator.sh#!/bin/bash export QTDIR/opt/Qt5.15.2/5.15.2/gcc_64 export PATH$QTDIR/bin:$PATH export LD_LIBRARY_PATH$QTDIR/lib:$LD_LIBRARY_PATH /opt/Qt5.15.2/Tools/QtCreator/bin/qtcreator $ 记得chmod x双击就能运行。不推荐把这个脚本直接放到应用菜单因为.desktop文件已经能做得更好脚本更适合作为备用启动方案存在。4.3 方案三解决应用内图标或主题缺失如果你遇到的其实是“应用打开了但内部图标空白”上面两个方案解决不了。这个问题的常见根源是系统缺少Qt界面所需的图标主题包。Ubuntu自带的GNOME图标主题和Qt的兼容性有时会出现问题可以尝试安装Hicolor图标主题和相关Qt平台插件sudo apt install hicolor-icon-theme qt5-gtk-platformtheme qt5-quickcontrols2如果系统中使用的是非默认主题还可以通过环境变量强制Qt使用xcb平台插件在.desktop文件的Exec字段前加上环境变量Execenv QT_QPA_PLATFORMxcb /opt/Qt5.15.2/Tools/QtCreator/bin/qtcreator %F这样设置后很多界面渲染和图标异常问题都能一并解决。需要注意env命令在这里的作用是给Qt Creator设置临时的环境变量不会影响系统其他程序。5. 高频问题排查实录工具思路5.1 终端启动报libxcb系列缺库怎么办新装的Ubuntu系统最容易踩的坑就是libxcb系列依赖不全。如果你在终端里运行qtcreator时看到类似这样的输出qtcreator: error while loading shared libraries: libxcb-xinerama0.so.0: cannot open shared object file: No such file or directory不要慌这就是老生常谈的动态库缺失问题。用ldd逐个检查ldd /opt/Qt5.15.2/Tools/QtCreator/bin/qtcreator | grep not found看到哪个缺就装哪个。比如缺libxcb-xinerama0.so.0就执行sudo apt install libxcb-xinerama0缺libxcb-cursor0就执行sudo apt install libxcb-cursor0逐个补齐直到ldd的输出里不再有“not found”。这一步做完Qt Creator百分之百能启动了。5.2 unknown module serialport的处理“Project ERROR: unknown module(s) in qt: serialport”这个报错基本可以断定是安装时没有勾选Serial Port模块。解决办法有几个。第一个如果还没关闭MaintenanceTool直接运行/opt/Qt5.15.2/MaintenanceTool登录后选择“添加或移除组件”在Qt 5.15.2下勾选Serial Port模块应用更新完事。第二个如果MaintenanceTool找不到了重新下载安装包在组件选择界面勾选模块后安装它会覆盖安装但保留原有组件。第三个不想碰GUI工具的可以用aqtinstall这个命令行工具安装模块适合自动化脚本场景。不过初学者不太建议碰这个直接GUI操作最直观。5.3 Qt Creator里无法输入中文这个坑虽然不属于“不显示图标”但经常和Qt环境问题一起出现。表现是系统输入法能切换但是在Qt Creator里敲不出中文字符。根本原因是Qt应用缺少输入法框架插件。如果你用fcitx输入法执行sudo apt install fcitx-frontend-qt5然后设置环境变量在~/.bashrc里加一行export QT_IM_MODULEfcitx重启Qt Creator中文输入一般就好了。如果你用的是iBusUbuntu默认就装sudo apt install ibus-qt5这个细节用图形界面时基本遇不到但一旦你换用纯命令行方式启动Qt Creator就非常容易出现。5.4 桌面快捷方式常见错误速查表为了方便排查把上面的问题综合成一张速查表遇到同类问题直接对照检查现象原因解决办法应用菜单没有Qt Creator入口缺少.desktop文件按4.1节创建.desktop双击.desktop无反应Exec路径错误或没有执行权限核对路径chmod x快捷方式图标空白Icon路径错误或图标文件不存在find命令定位真实图标路径点击后闪退终端无报错缺动态库或平台插件冲突ldd排查装缺失库Exec加QT_QPA_PLATFORMxcb编译工程报serialport unknown module安装时未勾选该模块MaintenanceTool添加组件这张表里的每一条都是我实际遇到过的有些甚至在我自己换了新电脑重装系统后又碰了一遍。每次排查的核心思路就一句话先确认路径存在、再确认依赖完整、最后确认权限没问题。顺序对了问题基本都会浮出来。如果以上所有排查都不奏效还有一个终极大招卸载重装。卸载时把整个安装目录删掉连~/.config/QtProject目录一起清掉然后再走一遍完整流程。这个操作虽然粗暴但能清掉绝大多数配置层面的历史遗留问题。我个人在实际操作中的体会是Ubuntu下装Qt本身不难难点全在安装后的一系列小问题的组合拳。一次把依赖装齐、装好快捷方式、配好环境变量后面的开发体验就能顺畅很多。以后无论是升级Qt版本还是换新机器这套流程都能直接复用顺手把每一步的排查思路记在笔记里能省下不少重复踩坑的时间。
返回列表