You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt C++中QPixmap加载图片导致程序崩溃问题求助

加载QPixmap时程序崩溃问题排查与解决

我尝试将图片加载到QPixmap对象中,代码如下:

QPixmap blackKingPixmap;
std::cout << "Hello";
blackKingPixmap.load("images/black_king.png");
std::cout << "Hello";

运行后仅打印一个Hello,程序随即终止,无任何错误提示。

我已尝试以下方法:

  • 将images文件夹放入resources目录及cpp文件同级目录
  • 将图片直接放入resources目录
  • 使用图片绝对路径
  • 先加载图片到QImage再转为QPixmap

确认图片路径存在且权限正常,但均无效。

最小复现示例

main.cpp

#include <QApplication>
#include <QLabel>
#include <QPixmap>
#include <iostream>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);

    QPixmap blackKingPixmap;
    
    blackKingPixmap.load("images/black_king.png");

    QLabel label;
    label.setPixmap(blackKingPixmap);
    label.show();

    return app.exec();
}

main.pro

CONFIG += c++11 console

TEMPLATE = app
TARGET = main

QT = core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

SOURCES +=  main.cpp

命令行执行qmake、make、release\main后程序崩溃,使用最新MinGW编译器。注释.load行后程序可正常显示窗口。

后续调试尝试

修改代码为:

QPixmap Chess_GUI::loadPixmap(const QString &filePath) {
    std::cout << "1";
    QImageReader reader(filePath);
    std::cout << "2";
    QImage image = reader.read();
    std::cout << "3";
    if (image.isNull()) {
        std::cerr << "Failed to load image: " << filePath.toStdString() << "\n";
    }
    std::cout << "4";
    return QPixmap::fromImage(image);
}

void Chess_GUI::loadImages() {
    blackKingPixmap = loadPixmap("images/black_king.png");
    std::cout << "5";

    // More function calls here
}

运行后打印1234但未打印5,说明图片加载正常但无法转为QPixmap。

问题现已解决,原因与QPixmap/QImage返回或QString传参有关。


内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:21:09