출처 : http://ko11011.tistory.com/trackback/8
QT에서 이미지를 로드하여 화면에 출력하는 방법을 알아보자
순서
QImage로 이미지를 불러온다. -> QPixmap에 옮긴다. -> QLabel에서 QPixmap를 불러와서 화면에 출력한다.
코드를 보며 설명하겠다.
#include <QImage> //QImage를 사용하기 위한 라이브러리
#include <QPixmap> //QPixmap를 사용하기 위한 라이브러리
#include <QLabel> //QLabel를 사용하기 위한 라이브러리
#include <QMessageBox> //QMessageBox를 사용하기 위한 라이브러리
//해당 함수로 이미지를 로드한다. ( 직접 제작한 함수이다.)
void MainWindow::imgload()
{
QImage *Img = new QImage(); //이미지를 로드하기 위한 QImage 선언
QPixmap *buffer = new QPixmap(); //버퍼로 사용할 QPixmap 선언
if(Img->load(":/img/1.jpg")) //이미지를 로드한다.
{
*buffer = QPixmap::fromImage(*Img); //이미지를 버퍼에 옮긴다.
*buffer = buffer->scaled(Img->width(),Img->height()); //이미지 사이즈 조절
}
else // 이미지 로드 실패
{
QMessageBox::about(0, QString::fromAscii("Image load Error"),QString::fromAscii ("Image load Error"));
}
QLabel *lbView = new QLabel(this); //이미지를 화면에 출력할 QLabel 선언
lbView->setPixmap(*buffer); //버퍼에 있는 이미지를 QLabel에 출력
lbView->resize(buffer->width(),buffer->height()); //QLabel의 크기를 이미지 사이즈에 맞추어 조절한다.
lbView->move(0,0); //QLabel위치 조정
lbView->show(); //QLabel 를 보여준다.
}
변수는 총 3개 필요하다.
1) QImage : 이미지를 불러올 때 이미지라는 것을 알기 위해 사용한다.
2) QPixmap : QLabel에 이미지를 옮길 때 사용하는 중간 버퍼
3) QLabel : 실제로 화면에 출력해주기 위한 Label
QImage의 load함수를 사용하여 이미지를 로드한다.
if(Img->load(":/img/1.jpg")) //이미지를 로드한다.
bool QImage::load ( const QString & fileName, const char * format = 0 )
첫번째 인자 : 파일이름이 들어간다.
두번째 인자 : 파일의 포멧이 들어간다. (생략 가능하다.)
리턴값 : 이미지 로드가 성공시 TRUE을 리턴하고 실패시 FALSE를 리턴한다.
QPixmap의 static 함수를 사용하여 QImage 변수형을 QPixmap형식으로 전환하여 옮긴다.
*buffer = QPixmap::fromImage(*Img);
QPixmap QPixmap::fromImage ( const QImage & image, Qt::ImageConversionFlags flags = Qt::AutoColor ) [static]
첫번째 인자 : 변환할 QImage
두번째 인자 : Qt::ImageConversionFlags 설정 (기본값이 설정되어있어 변경하지 않았다. 자세한 내용은 필자도 모른다. Qt::ImageConversionFlags를 참고 )
QLabel의 setPixmap 함수를 이용하여 QPixmap에 옮긴 이미지를 QLabel에 출력한다.
lbView->setPixmap(*buffer);
Public Slots
void setPixmap ( const QPixmap & )
첫번째 인자 : 출력할 QPixmap
'QT > Examples' 카테고리의 다른 글
QT로 Serial 통신 구현하기 - 1 (0) | 2015.04.15 |
---|---|
Hello World를 띄우자. (0) | 2015.04.08 |
Qt에서 OpenCV 사용하기 (0) | 2015.03.30 |