[英]Image is not shown in QGraphicsScene
我寫了以下Qt代碼。 並為Windows(* .exe)制作可執行文件。 但是QGraphicsScene中沒有顯示Image(JPG)。 我已經檢查過圖像的路徑是否正確。 在下面的代碼中,MyQGraphicsScene是派生類繼承QGraphicsScene類。
我在macOS中編譯了相同的代碼。 然后,macOS的可執行文件(ELF)正確運行。 圖像文件顯示在其組件中。 我覺得源代碼是一樣的。 但結果因環境而異。
#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> &)));
}
我在macOS中編譯了相同的代碼。 然后,macOS的可執行文件(ELF)正確運行。 圖像文件顯示在其組件中。 我覺得源代碼是一樣的。 但結果因環境而異。
由於它可以在MacOS / X下工作,但不能在Windows下工作,一個可能的解釋是它是一個分布/環境問題。 特別是,您的程序可能無法在Windows下找到Qt的imageformat插件(例如qjpeg4.dll或qjpeg5.dll),這就是圖像未顯示的原因。
要測試該理論,您可以將qjpeg * .dll插件文件復制到與.exe文件相同的文件夾中,然后重新運行您的程序,看看是否能使其表現更好。 或者,如果您不想使用圖像格式插件,您可以將.jpg文件轉換為另一種文件格式,即Qt包括對BMP或PNG等本機(即基於非插件的)支持,並使用該文件格式代替。
因此,此問題的原因是我在從IDE啟動應用程序時對當前目錄的誤解 。 當前目錄是下圖中的(a)。
[Output directory is specified in build configuration] - (a)
|- debug - (b)
| |- test.exe // executable file of this application
| |- data
| |-000001.jpg
|- release
因此,我應該在“數據”目錄中包含目錄(a)中的圖像文件,如下圖所示。 我覺得這個IDE的規格很奇怪。 當然,當應用程序直接啟動時,當前目錄與exe文件的目標相同(雙擊exe文件)。
[Output directory is specified in build configuration] - (a)
|- debug - (b)
| |- test.exe // executable file of this application
|- release
|- data
|-000001.jpg
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.