gpt4 book ai didi

c++ - 图像未显示在 QGraphicsScene 中

转载 作者:太空宇宙 更新时间:2023-11-04 13:11:13 25 4
gpt4 key购买 nike

描述

我写了下面的 Qt 代码。并为 Windows (*.exe) 制作可执行文件。但是 Image (JPG) 没有显示在 QGraphicsScene 中。并且我已经检查过图像路径是否正确。在下面的代码中,MyQGraphicsScene 派生类继承了 QGraphicsScene 类。

我在 macOS 中编译了相同的代码。然后,macOS 的可执行文件 (ELF) 可以正常运行。图像文件显示在其组件中。我觉得源代码是一样的。但结果因环境而异。

开发环境

  • Windows 10
  • Qt 版本:5.7.0
  • C++ 编译器:Microsoft Visual C++ Ver.14.0 (MSVC2015)

源代码

    #include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QGraphicsRectItem>
#include <QMessageBox>
#include <QIcon>
#include "TrainingData.h"
#include "trainingDataMaker.h"

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
QGraphicsItem *curGItem;
QListWidgetItem *listItem;

ui->setupUi(this);
scene = new MyQGraphicsScene(QRectF(0, 0, 400, 400));
ui->graphicsView->setScene(scene);

listItem = new QListWidgetItem();
listItem->setIcon(QIcon("data/000001.jpg"));
ui->imgListWidget->addItem(listItem);
listItem = new QListWidgetItem();
listItem->setIcon(QIcon("data/000276.jpg"));
ui->imgListWidget->addItem(listItem);
ui->imgListWidget->setIconSize(QSize(300,100));


QPixmap pixmap;
QImage img("data/000001.jpg");
QTransform transForm;
pixmap = QPixmap::fromImage(img);
QGraphicsPixmapItem *imgPixmap = new QGraphicsPixmapItem(pixmap);
transForm = QTransform();
transForm.scale(0.1, 0.1);
imgPixmap->setTransform(transForm);
scene->addItem(imgPixmap);

//connect(scene, SIGNAL(changed(const QList<QRectF> &)), imgPixmap, SLOT(chgSize(const QList<QRectF> &)));

}

最佳答案

I compiled same code in macOS. Then, Executable file (ELF) for macOS ran correctly. Image file was shown in its component. I feel starange that source code is same. But the result is different by environment.

由于它在 MacOS/X 下工作但在 Windows 下不工作,一个可能的解释是它是一个分布/环境问题。特别是,您的程序可能在 Windows 下找不到 Qt 的图像格式插件(例如 qjpeg4.dll 或 qjpeg5.dll),这就是图像无法显示的原因。

要验证该理论,您可以将 qjpeg*.dll 插件文件复制到与您的 .exe 文件相同的文件夹中,然后重新运行您的程序,看看它是否会表现得更好。或者,如果您不想弄乱图像格式插件,您可以将您的 .jpg 文件转换为 Qt 包含 native (即非基于插件的)支持的另一种文件格式,例如 BMP 或 PNG,并使用它相反。

关于c++ - 图像未显示在 QGraphicsScene 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39773843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com