To display image in Qt4 you can use a QLabel and the setPixmap() method. But if you need something more complex that will keep the aspect ratio and can zoom and rotate you will have to create a custom widget. This is how i did it for a Image viewer application that i make it in Qt4 using c++.
#ifndef IMAGEWIDGET_H
#define IMAGEWIDGET_H
#include <QWidget>
class QSize;
class QImage;
class ImageWidget : public QWidget
{
 Q_OBJECT
public:
 explicit ImageWidget(QWidget *parent = 0);
 void setImage(const QImage &image);
 QImage *getImage();
 float getZoomFactor();
 //this is absolute depends only on the size of the image
 void setZoomFactor(float zf);
 //this is relative with the curent size/zoom
 void zoom(float zoomWithThisFactor);
 //if set to true the image will be zoomed to fit the widget
 void setZoomToFit(bool ztf);
signals:
public slots:
protected:
 //custom drawing rutine
 void paintEvent(QPaintEvent *);
 //custom sizeHint method
 QSize sizeHint() const;
private:
 QImage *image;
 float zoomFactor;
 float aspectRatio;
 bool zoomToFit;
 void computeZoomFactorToFitImage();
 void adjustSize();
};
#endif // IMAGEWIDGET_H
I subclased QWidget and reimpemented 2 methods paintEvent() and sizeHint():
void ImageWidget::paintEvent(QPaintEvent *)
{ 
 int x,y,w,h;
 //compute the image displaty size by multipling with the zoom factor
 w=image->width()*zoomFactor;
 h=image->height()*zoomFactor;
 //compute the x and y offset
 x=(rect().width()-w)/2;
 y=(rect().height()-h)/2;
 //if from some strange bug we get a negative value, 
 //probly this must be changed to an assert or thow and error and fix the eventual problem
 x=qMax(x,0);
 y=qMax(y,0);
 QRectF target(x,y,w,h);
 QPainter p(this);
 p.drawImage(target,*image);
}
QSize ImageWidget::sizeHint() const
{
 if(image!=NULL)
 {
 QSize hint= image->size();
 hint=zoomFactor*hint;
 return hint;
 }else
 return this->minimumSize();
}
The zoomToFit method will compute the zoom factor to fit the widget and will zoom the image
void ImageWidget::setZoomToFit(bool ztf)
{
 this->zoomToFit=ztf;
 if(zoomToFit)
 {
 computeZoomFactorToFitImage();
 }
 else
 {
 zoomFactor=1.0;
 }
 adjustSize();
 this->update();
}
void ImageWidget::computeZoomFactorToFitImage()
{
 //compute the aspect ration of the widget
 //cast t float to get a float result, if forget (float) you will get
 //a int value
 float ratio=rect().width()/(float)rect().height();
 if(ratio>aspectRatio)
 {//the widget width is larger relative of the image wirth
 zoomFactor=rect().height()/(float)image->height();
 }
 else
 {
 zoomFactor=rect().width()/(float)image->width();
 }
}
void ImageWidget::adjustSize()
{
 resize(this->sizeHint());
}
You can find all the code on source forge in a Image viewer application, the application is licnsed under GPL v3 , if someone needs the code under other license email me and i can give the rights
UPDATE:
download
svn co https://kisviwer.svn.sourceforge.net/svnroot/kisviwer kisviwer
you must use a svn client or the svn command line application, if in linux install svn and paste that line in the terminal,and a drectory kisviwer will appear with the code,windws guys google it
