【问题标题】:Load and display image in Qt GUI在 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文件。

标签: c++ qt user-interface qgraphicsview qgraphicsscene


【解决方案1】:

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

请这样尝试。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2016-06-22
    相关资源
    最近更新 更多