Я новичок в 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) можно расширить, чтобы соответствовать большое изображение, но когда я загружаю небольшой размер, она не может сжиматься к размеру этого изображения. Что здесь случилось?
спасибо.
Большое спасибо, но я изменяю свою реализацию, чтобы использовать QGraphicsScene для отображения моего изображения. – hakunami
У меня такая же проблема, и предлагаемое решение не работает. –