2012-07-11 3 views
1

Я новичок в QT, и я хочу использовать QT для разработки инструмента для аннотации изображений, который загружает изображение и позволяет пользователям их аннотировать. Я смотрю демонстрацию образа зрителя и решаю использовать QLabel для показа изображений, но вот проблема. Я хочу, чтобы мое главное окно (только для отображения изображения, панель инструментов плавающая) может автоматически соответствовать размеру загруженного изображения. Изменить код viwer изображения на это:QLabel расширяется, чтобы соответствовать одному большому iamge, но не может сжиматься, чтобы соответствовать маленькому изображению.

ImageViewer::ImageViewer() 
{ 
    imageLabel = new QLabel; 
    imageLabel->setBackgroundRole(QPalette::Base); 
    imageLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); 
    imageLabel->setScaledContents(false); 
    setCentralWidget(imageLabel); 

    createActions(); 
    createMenus(); 

    setWindowTitle(tr("Image Viewer")); 
    resize(sizeHint()); 
} 

void ImageViewer::open() 
{ 

    QString fileName = QFileDialog::getOpenFileName(this, 
            tr("Open File"), QDir::currentPath()); 
    if (!fileName.isEmpty()) { 
     QImage image(fileName); 
     if (image.isNull()) { 
      QMessageBox::information(this, tr("Image Viewer"), 
            tr("Cannot load %1.").arg(fileName)); 
      return; 
     } 

     imageLabel->setPixmap(QPixmap::fromImage(image)); 
     imageLabel->adjustSize(); 

    } 
} 

С помощью этого кода, главное окно (QLabel) можно расширить, чтобы соответствовать большое изображение, но когда я загружаю небольшой размер, она не может сжиматься к размеру этого изображения. Что здесь случилось?

спасибо.

ответ

0

Я считаю, что ваша проблема - это политика размера, которую вы устанавливаете, попробуйте QSizePolicy :: Minimum вместо QSizePolicy :: Expanding.

+0

Большое спасибо, но я изменяю свою реализацию, чтобы использовать QGraphicsScene для отображения моего изображения. – hakunami

+0

У меня такая же проблема, и предлагаемое решение не работает. –

0

Для полноты установки, задавая размер Политика ярлыка «Максимум» является самым быстрым способом.

Смежные вопросы