2012-07-11 89 views
1

我是QT的新手,我希望使用QT开发图像手动注释工具,该工具可加载图像并允许用户对其进行注释。我看图像查看器演示,并决定使用QLabel来显示图像,但这是问题所在。我希望我的主窗口(仅用于显示图像,工具栏处于浮动状态)可以自动适应加载的图像大小。我像viwer的代码改成这样:QLabel扩大到适合一个大的图像,但不能缩小以适应一个小图像

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 2012-07-13 15:18:05

+0

我有同样的问题,建议的解决方案不起作用。 – 2013-07-12 13:11:05

0

为了完整起见,将标签的尺寸策略设置为“最大”是最快的方法。

相关问题