关于qt的图片显示的问题,急???程序通过编译,但图片不能顺利打开。
下面是我的代码,为什么我每次编译通过之后生成的一个exe文件打开图片都是失败的?哪位能帮小弟看下是哪出了问题?#include<QtGui>#include<QImage...
下面是我的代码,为什么我每次编译通过之后生成的一个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 <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菜单,再帮我看看,谢谢拉! 展开
4个回答
展开全部
在QuickTime没有卸载的时候会把系统里图片显示的部分参数给改掉,所以装完以后卸载了QuickTime就会变得不能显示了,而png格式的图片在IE核心浏览器的网页上会变得不能显示(不是IE核心的浏览器,比如火狐就可以看到)。我当时就把QuickTime重装了一遍,然后把里面的设置改掉,在里面的支持的图片里把png后缀后面的那个勾去掉,然后再卸载掉(可能不用卸载也说不定),png图片就会显示了。不过每个人情况都有可能不一样,方法也许是因人而异的。
展开全部
你这里得到的filename是文件名吧?它并不包含文件路径,而你用QImage打开的时候,需要提供完整的文件路径,你试着把路径也读取出来,这样QImage才能正确打开图片。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用定时器切换静态图片。时间间隔短一点的话,就成动态的图片了。
希望能帮到你。
百度了一下,还可以这样:
#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();
}
你的串号我已经记下,采纳后我会帮你制作
希望能帮到你。
百度了一下,还可以这样:
#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();
}
你的串号我已经记下,采纳后我会帮你制作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我觉得是你的路径不对,仔细检查把
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询