2011-04-26 2 views
0

이미지를 선택하기 위해 미리보기 이미지가 필요한 기본 이미지 뷰어/태그 작성기를 만들고 있습니다. 지금까지 필자는 QShockArea를 QHBoxLayout과 묶는 QDockWidget을 사용하여 각 QPixMap이 설정된 일련의 QLabel을 포함했습니다.크기를 조정할 수있는 Qt 축소판 미리보기를 만드는 방법은 무엇입니까?

이것은 매우 우아하지 않은 것처럼 보입니다. QDockWidget의 크기를 조정할 때 미리보기 이미지의 자동 크기 조정을 구현하는 방법을 고려하는 것은 터무니 없습니다. 스크롤 막대가 나타나고 사라지면 축소판의 크기를 조정해야하므로 추가 작업이 필요합니다.

더 좋은 방법이 있어야합니까?

답변

1

qpixmap을 사용하여 qlabel 크기를 조정할 때 비슷한 문제가 발생했습니다. 가장 잘 작동하는 메서드는 대신 QWidget을 사용하고 paintEvent 함수를 다시 구현하는 것입니다. 그런 다음 QWidget 이미지의 크기가 조정되면 자동으로 크기가 조절됩니다.

bool image_set_; 
QImage image_; 
QBrush paintbrush_; 

void MyClass::paintEvent(QPaintEvent* event) 
{ 
    // if the QWidget has an image set, then we use our custom painting. 
    if(this->private_->image_set_) 
    { 
     //I've made it so that my QWidget has a 1px white border 
     this->private_->paintbrush_.setTextureImage(this->private_->image_.scaled(QSize(this->width() - 2, this->height() - 2))); 
     QPainter painter(this); 
     QRect temp_rect = QRect(1, 1, this->width()-2, this->height() - 2); 
     painter.fillRect(this->rect(), Qt::white); 
     painter.fillRect(temp_rect, this->private_->paintbrush_); 
    } 
    else 
    { 
     QWidget::paintEvent(event); 
    } 

}

: 나는 private_라는 개인 객체의 private 변수를 가지고 내 경우

예를 들면 다음과 같습니다

관련 문제