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
相关产品推荐
相关产品推荐

