关于qt的图片显示的问题,急???程序通过编译,但图片不能顺利打开。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于qt的图片显示的问题,急???程序通过编译,但图片不能顺利打开。相关的知识,希望对你有一定的参考价值。

下面是我的代码,为什么我每次编译通过之后生成的一个exe文件打开图片都是失败的?哪位能帮小弟看下是哪出了问题?
#include <QtGui>
#include <QImageReader>
#include <QScrollBar>
#include "mainwindow.h"

MainWindow::MainWindow()

ui.setupUi(this);
imageLabel = new QLabel;
imageLabel->setBackgroundRole(QPalette::Base);
imageLabel->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
imageLabel->setScaledContents(true);
scrollArea = new QScrollArea;
scrollArea->setBackgroundRole(QPalette::Dark);
scrollArea->setWidget(imageLabel);
setCentralWidget(scrollArea);
foreach (QByteArray ba, QImageReader::supportedImageFormats())

QString ext = QString("*.")+QString(ba);
supportFormat<<ext;

resize(780,580);
currentFile = displayFiles.constBegin();

MainWindow::~MainWindow()



void adjustScrollBar(QScrollBar *scrollBar, double factor)

scrollBar->setValue(int(factor * scrollBar->value()
+ ((factor - 1) * scrollBar->pageStep()/2)));

void MainWindow::scaleImage(double factor)

Q_ASSERT(imageLabel->pixmap());
scaleFactor *= factor;
imageLabel->resize(scaleFactor * imageLabel->pixmap()->size());
adjustScrollBar(scrollArea->horizontalScrollBar(), factor);
adjustScrollBar(scrollArea->verticalScrollBar(), factor);

void MainWindow::on_actionOpen_triggered()

QString fileName = QFileDialog::getOpenFileName(this,
tr("Open File"), QDir::currentPath(),
"Image Files (*.png *.jpg *.bmp)");
if (!fileName.isEmpty())

QImage image(fileName);
if (image.isNull())

QMessageBox::information(this, tr("Image loading..."),
tr("The image file could not be loaded.").arg(fileName));
return;

imageLabel->setPixmap(QPixmap::fromImage(image));
scaleImage(1.0);


你好!我不是要动态显示图片,我是希望能够以open的方式来取得图片,我的程序里面有的,最后还有个save菜单,再帮我看看,谢谢拉!

在QuickTime没有卸载的时候会把系统里图片显示的部分参数给改掉,所以装完以后卸载了QuickTime就会变得不能显示了,而png格式的图片在IE核心浏览器的网页上会变得不能显示(不是IE核心的浏览器,比如火狐就可以看到)。我当时就把QuickTime重装了一遍,然后把里面的设置改掉,在里面的支持的图片里把png后缀后面的那个勾去掉,然后再卸载掉(可能不用卸载也说不定),png图片就会显示了。不过每个人情况都有可能不一样,方法也许是因人而异的。 参考技术A 你这里得到的filename是文件名吧?它并不包含文件路径,而你用QImage打开的时候,需要提供完整的文件路径,你试着把路径也读取出来,这样QImage才能正确打开图片。本回答被提问者采纳 参考技术B 用定时器切换静态图片。时间间隔短一点的话,就成动态的图片了。
希望能帮到你。
百度了一下,还可以这样:
#include <qapplication.h>
#include <qlabel.h>
//#include <qpixmap.h> //qt中的类
#include <qtimer.h>
#include <qmovie.h>
int main (int argc, char *argv[])

QApplication app(argc,argv);
QLabel *label=new QLabel ("", 0); //初始化qlabel
QMovie pm("logo.gif"); //设定要显示的图片
label->setMovie(pm); //将图片加载到label上
label->setGeometry( 0, 0, 240, 320 ); //屏幕大小,初始位置
app.setMainWidget(label); //将图片设为放置在中间
// QTimer::singleShot( 3*1000, label, SLOT(close()));//显示时间
label->show ();
return app.exec();

你的串号我已经记下,采纳后我会帮你制作
参考技术C 我觉得是你的路径不对,仔细检查把

为啥我的程序显示此编译错误?

【中文标题】为啥我的程序显示此编译错误?【英文标题】:why my program is showing this compilation error?为什么我的程序显示此编译错误? 【发布时间】:2020-08-21 10:03:29 【问题描述】:

我正在学习 c++ 并且刚刚达到指针,并且在阅读了关于我开始练习它之后 我被困在多维数组和指针上。我被困的问题是我的程序没有打印第二个数组元素它也给出了一些错误我试图找到解决方案但找不到我的共享图片程序你可以看看它的链接如下

enter image description here

谢谢

【问题讨论】:

ptrarr 是指向 int 的指针,*ptrarrint**ptrarr 没有意义,为什么要取消引用两次? 我访问了很多网站,它向我展示了同样的东西。请告诉如何解决它 请编辑您的问题,删除您的代码图像并将您的代码作为文本粘贴到您的问题中。 等我也照做 【参考方案1】:

这是你的代码

#include <iostream>

using namespace std;

int main()

    int arr[2][3];
    arr[0][0]=1;
    arr[0][1]=8;
    arr[0][2] = 4;
    arr[1][0]=3;
    arr[1][1] = 6;
    arr[1][2] = 54;
    int* ptrarr=&arr[0][0];
    
    cout<<*(*(ptrarr+1)+1);

    return 0;

实际上,您所做的是将ptrarr 分配给arr[0][0] 的地址。在cout 语句中,ptrarr 将地址递增到arr[0][1],然后引用它(输出该地址的值),即8 (arr[0][1]=8),然后,您再次取消引用它,这意味着没有任何意义,因为您有一个值现在而不是地址。

这可以解决你的错误

#include <iostream>

using namespace std;

int main()

    int arr[2][3];
    arr[0][0]=1;
    arr[0][1]=8;
    arr[0][2] = 4;
    arr[1][0]=3;
    arr[1][1] = 6;
    arr[1][2] = 54;
    int* ptrarr=&arr[0][0];
    
    cout<<*(ptrarr+ (rowNumber*COL) + colNumber));

    return 0;

其中rownumbercolnumber 是您要访问的位置,COL 是总列数。在您的情况下,它是3

所以如果你想输出arr[1][2],你会这样做

cout<<*(ptr+(1*3)+2);

【讨论】:

先生,但我想要第二个数组的值 您实际期望的输出是什么? 我期望的输出是 54 我现在已经编辑了答案。它现在可以工作了。获取输出为54,cout&lt;&lt;*(ptrarr+(1*3)+2),因为它位于 arr[1][2] 你能解释一下这是什么意思吗?它会有所帮助

以上是关于关于qt的图片显示的问题,急???程序通过编译,但图片不能顺利打开。的主要内容,如果未能解决你的问题,请参考以下文章

急急急~~~VS2010中QT插件运行不了!!!~~~

Qt 绘图问题,急急急!

QT交叉编译时怎么添加静态库,急!!!

急!!!关于使用ASM进行JAVA字节码操作的问题

发布的QT程序无法显示图标和图片的问题

有关linux下的QT应用程序如何在开发板上运行?急!!!谢谢各位