資源簡介
解決QT大圖片加載失敗問題:QImage加載大圖片時,malloc返回NULL,導致圖片加載失敗。
用QT4.8,高版本改改頭文件就可以了。

代碼片段和文件信息
#include?
#include?
#include?“imageviewer.h“
#include?“qbmploader.h“
#include?“qimagescrollarea.h“
#include?“QImageContent.h“
//!?[0]
ImageViewer::ImageViewer()
{
????imageLabel?=?new?QLabel;
????imageLabel->setBackgroundRole(QPalette::base);
????imageLabel->setSizePolicy(QSizePolicy::Ignored?QSizePolicy::Ignored);
????imageLabel->setScaledContents(true);
????scrollArea?=?new?QImageScrollArea;
????setCentralWidget(scrollArea);
????createActions();
????createMenus();
????setWindowtitle(tr(“Image?Viewer“));
????resize(500?400);
}
//!?[0]
//!?[1]
void?ImageViewer::open()
//!?[1]?//!?[2]
{
????QString?fileName?=?QFileDialog::getOpenFileName(this
????????????????????????????????????tr(“Open?File“)?QDir::currentPath());
????if?(!fileName.isEmpty())?{
//????????QImage?image;//(fileName);
//????????StoreBitmap::QBmpLoader?loader;
????????QImageContent*??content
????????????????=?qobject_cast(scrollArea->widget());
????????if(content!=NULL){
????????????content->setImagePath(fileName);
????????}
//????????loader.read(&image);
//????????if?(image.isNull())?{
//????????????QMessageBox::information(this?tr(“Image?Viewer“)
//?????????????????????????????????????tr(“Cannot?load?%1.“).arg(fileName));
//????????????return;
//????????}
//!?[2]?//!?[3]
?//???????imageLabel->setPixmap(QPixmap::fromImage(image));
??????//??content->resize(image.width()image.height());
//????????HBITMAP?hBmp?=?(HBITMAP)LoadImageA(?NULL??fileName.toLocal8Bit().data()//L“z:\\bg4.bmp“
//????????????????????????????????????????????IMAGE_BITMAP
//????????????????????????????????????????????0??0
//???????????????????????????????????????????LR_CREATEDIBSECTION|LR_LOADFROMFILE);
//????????DWORD?error?=?GetLastError();
//????????QPixmap?pixmap?=?QPixmap::fromWinHBITMAP(hBmp);
//????????imageLabel->setPixmap(pixmap);
//????????Deleteobject(hBmp);
//!?[3]?//!?[4]
????????scaleFactor?=?1.0;
????????printAct->setEnabled(true);
????????fitToWindowAct->setEnabled(true);
????????updateActions();
//????????if?(!fitToWindowAct->isChecked())
//????????????imageLabel->adjustSize();
????}
}
//!?[4]
//!?[5]
void?ImageViewer::print()
//!?[5]?//!?[6]
{
????Q_ASSERT(imageLabel->pixmap());
#ifndef?QT_NO_PRINTER
//!?[6]?//!?[7]
????QPrintDialog?dialog(&printer?this);
//!?[7]?//!?[8]
????if?(dialog.exec())?{
????????QPainter?painter(&printer);
????????QRect?rect?=?painter.viewport();
????????QSize?size?=?imageLabel->pixmap()->size();
????????size.scale(rect.size()?Qt::KeepAspectRatio);
????????painter.setViewport(rect.x()?rect.y()?size.width()?size.height());
????????painter.setWindow(imageLabel->pixmap()->rect());
????????painter.drawPixmap(0?0?*imageLabel->pixmap());
????}
#endif
}
//!?[8]
//!?[9]
void?ImageViewer::zoomIn()
//!?[9]?//!?[10]
{
????scaleImage(1.25);
}
void?ImageViewer::zoomOut()
{
????scaleImage(0.8);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2018-09-25?13:30??imageviewer\
?????文件????????6133??2018-09-25?11:27??imageviewer\Makefile
?????文件???????11589??2018-09-25?11:27??imageviewer\Makefile.Debug
?????文件???????11762??2018-09-25?11:27??imageviewer\Makefile.Release
?????文件????????1891??2017-12-21?15:27??imageviewer\QBmpLoader.h
?????文件????????8550??2018-03-01?09:38??imageviewer\imageviewer.cpp
?????文件?????????235??2012-11-23?18:11??imageviewer\imageviewer.desktop
?????文件????????3169??2017-12-19?14:16??imageviewer\imageviewer.h
?????文件????????1059??2017-12-19?14:09??imageviewer\imageviewer.pro
?????文件???????14332??2018-06-20?14:58??imageviewer\imageviewer.pro.user
?????文件???????14432??2018-09-25?13:09??imageviewer\imageviewer.pro.user.2.5pre1
?????文件????????7549??2017-12-18?10:09??imageviewer\imageviewer2.cpp
?????文件????????1156??2017-12-18?10:09??imageviewer\imageviewer2.h
?????文件????????2347??2017-12-19?10:18??imageviewer\main.cpp
?????文件?????????266??2018-09-25?11:27??imageviewer\ob
?????文件?????????286??2018-09-25?11:27??imageviewer\ob
?????文件???????49768??2018-04-12?20:28??imageviewer\qbmploader.cpp
?????文件????????3477??2018-04-12?20:26??imageviewer\qimagecontent.cpp
?????文件?????????823??2018-04-11?16:44??imageviewer\qimagecontent.h
?????文件????????4113??2018-09-25?11:28??imageviewer\qimagescrollarea.cpp
?????文件?????????868??2018-09-25?11:27??imageviewer\qimagescrollarea.h
評論
共有 條評論