Почему QPixmap :: scaled () не работает?

Я пишу простое приложение с использованием QPixmap и QPainter. В моей программе мне нужно загрузить некоторые изображения и изменить их размер. Я использовал QPixmap :: scaled (), но изображения не масштабируются. Что я сделал не так?
Это мой код:

chesstile.cpp

#include "chesstile.h"
ChessTile::ChessTile(QWidget *parent) :
QLabel(parent)
{
}

void ChessTile::paintEvent(QPaintEvent *)
{
const QString &fileName = "images/white_king.png";
QPixmap bgPixmap(fileName);
bgPixmap.scaled(QSize(64, 64));
QPainter painter(this);
painter.drawPixmap(0, 0, bgPixmap);
}

chesstile.h

#ifndef CHESSTILE_H
#define CHESSTILE_H

#include <QLabel>
#include <QString>
#include <QPainter>
#include <QPixmap>
#include <QSize>

class ChessTile : public QLabel
{
Q_OBJECT
public:
ChessTile(QString fileName,
QString tileColor,
QWidget *parent = 0);
void paintEvent(QPaintEvent *);

private:

signals:

public slots:

};

#endif // CHESSTILE_H

2

Решение

Из документов вы заметите, что QPixmap::scaled функция-член const То есть это не меняет сам объект.

Масштабированный объект возвращается этим методом, он не меняет исходное растровое изображение.

Попробуйте что-то вроде:

QPixmap bgPixmap(fileName);
QPixmap scaled = bgPixmap.scaled(QSize(64, 64));

QPainter painter(this);
painter.drawPixmap(0, 0, scaled)
8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]