必须将.qrc文件显式加入.pro文件(RESOURCES += resources.qrc)或CMakeLists.txt(qt_add_resources),保存后重新运行qmake、clean并rebuild,同时确保prefix设置正确且路径大小写严格匹配。

图片不显示,八成是路径写错了,或者资源没注册进编译流程——不是代码问题,是资源系统没走通。
怎么让 .qrc 文件真正参与编译
光在 Qt Creator 里右键「Add New → Qt Resource File」生成一个 resources.qrc 不够。它必须被显式加入 .pro 文件,否则编译器完全无视它:
- 检查
.pro文件里是否有类似RESOURCES += resources.qrc这行;没有就手动加上,保存后右键项目 → «重新运行 qmake» - 如果用的是 CMake(Qt6 默认),则要在
CMakeLists.txt中调用qt_add_resources(),例如:qt_add_resources(IMG_SOURCES "resources.qrc")
并确保IMG_SOURCES被传给add_executable() - 改完配置后务必 clean + rebuild,Qt 的资源缓存有时不会自动刷新
QPixmap 加载时路径写成 :/images/logo.png 还是 :/logo.png
取决于你在 .qrc 编辑器里设的 prefix 和文件是否带子目录:
- 若
.qrc内容是<qresource prefix="/images"><file>logo.png</file></qresource>,那路径就是:/images/logo.png - 若写的是
<qresource prefix="/images"><file>icons/ok.png</file></qresource>,路径就得是:/images/icons/ok.png,不能省略icons/ - 前缀末尾不加斜杠,
prefix="/images/"是错的,Qt 会把它当字面量处理,导致路径拼接异常
UI 设计器里选不到刚加的图片
Designer 界面中拖个 QLabel,点右边属性栏的 pixmap → «…» → «Choose Resource» 找不到图?常见原因:
- 资源文件还没保存:编辑
.qrc后必须按Ctrl+S,否则 Designer 不感知变更 - 图片文件本身路径非法:比如含中文、空格或特殊符号(如
my img.png),Qt Designer 有时无法解析,建议全英文+下划线 - 用了 alias 却没在 Designer 里切换视图:右下角资源面板默认只显示「文件名」,要点击面板右上角齿轮图标 → 勾选 «Show aliases» 才能看到你设的别名
为什么 QPixmap("xxx.png") 有时能跑,有时黑屏
这是最易混淆的点:不带冒号的路径是文件系统路径,和资源系统无关:
-
QPixmap("logo.png")→ 相对当前工作目录(通常是构建目录build-xxx/),不是源码目录,也不是可执行文件所在目录 - 跨平台部署时几乎必挂:Windows 下可能从
debug/找,macOS 可能从 app bundle 的 Resources 子目录找,Linux 就更随意 - 想稳定加载本地图片,用绝对路径或
QApplication::applicationDirPath()拼接,例如:QPixmap(QApplication::applicationDirPath() + "/logo.png")
真正容易被忽略的是:资源路径里的大小写敏感性。Windows 上 :/Images/logo.png 和 :/images/logo.png 可能都行,但 Linux/macOS 严格区分——而 Qt Creator 的 Designer 面板却常不提示这个错误。


















