Scaling QPixmap image
Article Metadata
Tested with
Devices(s): Nokia 5800 XpressMusic
Compatibility
Platform(s): S60 5th Edition
Article
Keywords: QPixmap
Created: tepaa
(26 Mar 2009)
Last edited: hamishwillee
(11 Oct 2012)
Contents |
Overview
This code snippets shows how to scale a QPixmap image.
Preconditions
- Install latest Nokia Qt SDK
Header
public:
void updateImage();
void paintEvent(QPaintEvent*);
void resizeEvent (QResizeEvent*);
private: //Data
QPixmap* pixmap;
QSize widgetSize;
Source
The application supports screen orientation changes. In resizeEvent(), store the new size of the widget. This way the image can always be scaled to the correct size.
void QMyWidget::resizeEvent (QResizeEvent* event)
{
widgetSize = event->size();
// Call base class impl
QWidget::resizeEvent(event);
}
Load the image from the file system:
void QMyWidget::updateImage()
{
delete pixmap;
pixmap = 0;
// imagePath can be something like "c:/data/Images/myImage.jpg"
pixmap = new QPixmap(imagePath);
update();
}
Scale the new image and draw it on the screen.
void QMyWidget::paintEvent(QPaintEvent *)
{
QPainter painter(this);
if (!pixmap->isNull())
{
QPoint centerPoint(0,0);
// Scale new image which size is widgetSize
QPixmap scaledPixmap = pixmap->scaled(widgetSize, Qt::KeepAspectRatio);
// Calculate image center position into screen
centerPoint.setX((widgetSize.width()-scaledPixmap.width())/2);
centerPoint.setY((widgetSize.height()-scaledPixmap.height())/2);
// Draw image
painter.drawPixmap(centerPoint,scaledPixmap);
}
}
Postconditions
The QPixmap image has been scaled.

