C++ 的 Qt 库中的 QPixmap 问题

问题描述 投票:0回答:1

我正在尝试将图像加载到 QPixmap 对象中,这是我的代码:

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

当我运行它时,我只看到一个“Hello”打印到控制台,不久之后程序终止,而没有打印第二个“Hello”。

当我运行它时,我没有收到任何错误消息,它只是终止。

我尝试过以下方法:

  • 将“images”文件夹放入“resources”文件夹中,并与.cpp文件放在同一文件夹中;
  • 将图像从文件夹中取出,直接放入“资源”文件夹中;
  • 指定图像的绝对路径('C:/etcetc');
  • 我什至尝试先将图像加载到 QImage,然后尝试从 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 作为我的 C++ 编译器。

另请注意,当我注释掉第一个示例中的 .load(path) 行时,整个程序运行良好,并且显示窗口(只是上面没有图像)。

谢谢, 迈克尔

c++ qt qpixmap
1个回答
0
投票

尝试

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();
}
© www.soinside.com 2019 - 2024. All rights reserved.