(因为刚刚接触qt,还不知道具体原因,这里只提供一种可能的解决方案,这个方案也可能不具有适用性)
我想把Qt程序打包成exe文件,参考了文章:(17条消息) QT程序打包成EXE_李子树呢的博客-CSDN博客_qt exe打包工程,结果在windeployqt创建应用程序发布包时,发现exe文件内控件label的pixmap的图片没有显示;但是项目在qt creator下release构建并运行时是有图片的。折腾了一会儿后发现,把原代码里pixmap【选择文件】->选择图片的过程变为【选择资源】->选择图片,再重新构建运行,再把此时的exe文件复制粘贴到打包的文件夹下就可以了
目录
一、问题描述
下载了别人的项目源码到自己电脑里(源码:https://github.com/INnoVation-soO/qt-order-),文件夹结构如下:
waiter项目结构如下:
目标:将waiter项目打包为可执行文件。
第一种问题操作
打开mainwindow.ui,对label控件的pixmap,点击右侧的黑三角->点击【选择文件】->在image文件夹里选择图片(这个image文件夹并不在项目内,具体位置见上方第一张的文件夹结构图)
release构建并运行,图片能正常显示
接下来进行打包,将release文件夹下的waiter.exe复制粘贴到打包程序的文件夹下,执行windeployqt的命令后,运行打包的程序,结果左侧控件label的图片不能正常显示:
(其他图片能显示是因为已经使用了解决方案)
第二种问题操作
把故事线退回设置pixmap那里,点击右侧的黑三角->点击【选择文件】->进入waiter文件夹内的image文件夹->选择图片
然后如法炮制,重复上述打包操作,直到执行windeployqt的命令后,运行打包的程序,结果左侧控件label的图片仍然不能正常显示。
(题外话:如果从release切回debug的话,若出现:-1: error: No rule to make target '../01waiter/image/01.png', needed by 'debug/qrc_a01.cpp'. Stop.报错,则可以尝试qmake并重新构建)
二、解决方案
故事线回到设置pixmap那里,点击右侧的黑三角->点击【选择资源】->release运行,然后按照打包的步骤正常进行,运行打包的程序,结果label的图片可以正常显示:
三、其他补充
我只知道这样的解决方案恰好能解决我的问题(多少有点瞎猫碰上死耗子),但具体为什么可以这样,或者说为什么那两个问题操作不能正常地显示图片,我就不清楚了……我是刚刚接触qt,很多地方不太熟悉,欢迎各位大佬指正,希望能帮助到遇到这个问题的大家,祝大家遇到的问题都能早日解决