我正在尝试将图像加载到 QPixmap 对象中,这是我的代码:
QPixmap blackKingPixmap;
std::cout << "Hello";
blackKingPixmap.load("images/black_king.png");
std::cout << "Hello";
当我运行它时,我只看到一个“Hello”打印到控制台,不久之后程序终止,而没有打印第二个“Hello”。
当我运行它时,我没有收到任何错误消息,它只是终止。
我尝试过以下方法:
我已检查该图片确实存在于指定的路径中,并且访问该图片的权限是正确的。
这一切都没有用!
基本上我已经尝试了所有我能想到的方法来修复它,但都不起作用。
编辑:提供一个最小的可重现示例。
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 作为我的 C++ 编译器。
另请注意,当我注释掉第一个示例中的 .load(path) 行时,整个程序运行良好,并且显示窗口(只是上面没有图像)。
谢谢, 迈克尔
尝试
QImageReader
确保图像未损坏。
#include "mainwindow.h"
#include <QApplication>
#include <QLabel>
#include <QPixmap>
#include <iostream>
#include <QImageReader>
#include <QMessageBox>
#include <QFile>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
QString path = "images/black_king.png";
if (!QFile::exists(path)) {
QMessageBox::critical(0, "Error", "File not exists");
return 1;
}
QImageReader reader(path);
QImage image = reader.read();
if (image.isNull()) {
QMessageBox::critical(0, "Error", reader.errorString());
return 1;
}
QPixmap blackKingPixmap = QPixmap::fromImage(image);
QLabel label;
label.setPixmap(blackKingPixmap);
label.show();
return app.exec();
}