关于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菜单,再帮我看看,谢谢拉!
希望能帮到你。
百度了一下,还可以这样:
#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
的指针,*ptrarr
是 int
和 **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;
其中rownumber
和colnumber
是您要访问的位置,COL
是总列数。在您的情况下,它是3
。
所以如果你想输出arr[1][2]
,你会这样做
cout<<*(ptr+(1*3)+2);
【讨论】:
先生,但我想要第二个数组的值 您实际期望的输出是什么? 我期望的输出是 54 我现在已经编辑了答案。它现在可以工作了。获取输出为54
,cout<<*(ptrarr+(1*3)+2)
,因为它位于 arr[1][2]
你能解释一下这是什么意思吗?它会有所帮助以上是关于关于qt的图片显示的问题,急???程序通过编译,但图片不能顺利打开。的主要内容,如果未能解决你的问题,请参考以下文章