在 Qt GUI 中加载和显示图像

Posted

技术标签:

【中文标题】在 Qt GUI 中加载和显示图像【英文标题】:Load and display image in Qt GUI 【发布时间】:2014-01-16 05:04:33 【问题描述】:

我从事 Qt GUI C++ 项目。我尝试从资源文件中显示图像,并且有更多要求,例如播放幻灯片照片。 我在调试时遇到困难,它只是显示白屏。我以为图像没有加载到 GraphicsView。在 main.cpp 和 mainwindow.ui 中,我将它们保留为默认值,不进行编辑。 所以请帮我解决这个问题。提前致谢

主窗口.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPixmap>
#include <QGraphicsPixmapItem>
#include <QMessageBox>
#include <QGraphicsView> 
#include <QStackedWidget>
#include <QGraphicsScene>
#include <QDataStream>
#include <QFile>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)

    ui->setupUi(this);
    QPixmap file(":/rose.jpg");
    QStackedWidget  *temp = new QStackedWidget();
    QGraphicsScene scene;
    QGraphicsView view(&scene);
        QGraphicsPixmapItem img(file);
        scene.addItem(&img);
        temp->addWidget(&view);
        setCentralWidget(view);


MainWindow::~MainWindow()

    delete ui;

【问题讨论】:

检查 (file.isNull()) 是否返回 true .. 请出示您的.qrc文件和.pro文件。 【参考方案1】:

您的QGraphicsViewQGraphicsScene 实例是局部变量,当超出MainWindow 构造函数范围时它们将被销毁。

请这样尝试。

QGraphicsScene *scene = new QGraphicsScene(this);
QGraphicsView *view = new QGraphicsView(scene);

如果它仍然不起作用,请检查您的 QPixmap 文件是否为空或与 @Wagmare 所说的不同。

【讨论】:

以上是关于在 Qt GUI 中加载和显示图像的主要内容,如果未能解决你的问题,请参考以下文章

在 react 组件中加载和显示 json 数据

在 Qt GUI 中显示图像序列?

Qt C++ 在 GUI 线程(Boost 线程)之外显示图像

如何在运行时生成的 QML 中加载图像(jpg)

在 UIViewController 中加载和卸载数据

尝试在 python 中加载 bmp 图像时,数组列的顺序未对齐