2013-07-06 4 views
1

QPixmap 및 QPainter를 사용하여 간단한 응용 프로그램을 작성하고 있습니다. 내 프로그램에서 일부 이미지를로드하고 크기를 조정해야합니다. QPixmap :: scaled()를 사용했지만 이미지의 크기가 조정되지 않았습니다. 내가 뭘 잘못 했니? - 즉,왜 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 

답변

5

당신은 QPixmap::scaled 멤버 함수가 const 인 문서에서 알 수 있습니다 : 이 내 코드입니다 객체 자체는 변경되지 않습니다.

크기 조정 된 개체는 해당 메서드에서 반환되지만 원본 pixmap은 변경되지 않습니다.

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

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

감사 :

같은 것을보십시오. 이제 작동합니다. 나는이 세부 사항에 관심을 기울이지 않은 이유를 모르겠습니다. –