2014-11-07 2 views
1

QT를 사용하여 매우 간단한 이미지 뷰어를 개발하려고합니다. 나는 QGraphicsScene 위젯에 이미지를 표시하려면 다음 코드를 사용하고 있습니다 : outputQt : QGraphicscene을 사용하여 이미지를 표시합니다.

가 어떻게이 GraphicsScene에 이미지를 넣을 수 :

QImage image(fileName); 


firstPicture = new QGraphicsScene(); 
firstPicture->addPixmap(QPixmap::fromImage(image)); 


ui->graphicsView->setScene(firstPicture); 
ui->graphicsView->fitInView(firstPicture->sceneRect() ,Qt::KeepAspectRatio); 

나는 다음과 같은 출력을 무엇입니까?

답변

2

이 방법은보기에서 장면을 보여준 경우에만 작동합니다. 귀하의 경우에는 show()를 호출하지 않았습니다. 솔루션 :

장면이 이미 표시된 경우 접근 방식을 사용하십시오.

showEvent를 다시 구현하고 여기에서 접근 방식을 사용할 수 있습니다.

사용자가 직접 이미지 크기를 조정하고이 크기 조정 된 이미지를 장면으로 설정할 수 있습니다.

Qt::KeepAspectRatio 대신 Qt::IgnoreAspectRatio을 사용해도됩니다.

1

QGraphicsView에서 상속받은 사용자 정의 클래스를 만들 수 있습니다.

void MyView::resizeEvent(QResizeEvent *event) 
{ 

    fitInView(firstPicture->sceneRect(), Qt::KeepAspectRatio); 

    QGraphicsView::resizeEvent(event); 
} 

보기는 항상 전체 장면을 화면에 표시하는 방법 : 당신은 같은 사용자 정의 QGraphicsViewresizeEvent(QResizeEvent *event) 다시 구현해야합니다. 나는. 창 크기가 변경되고 graphicsView의 크기가 조정되면 장면의 크기가 조정되고 모든 것을 적절하게 볼 수 있습니다.

관련 문제