我是QT的新手,我想使用QT开发一个图像手动注释工具,它可以加载图像并允许用户注释它们。我查看了图像查看器演示,并决定使用QLabel来显示图像,但这是问题所在。我希望我的主窗口(仅用于显示图像,工具栏是浮动的)可以自动适应加载的图像的大小。我将图像viwer的代码更改为:
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 :(得分:0)
我相信您的问题是您正在设置的尺寸政策,请尝试QSizePolicy :: Minimum而不是QSizePolicy :: Expanding。
答案 1 :(得分:0)
为了完整起见,将标签的尺寸政策设置为"最大"是最快的方式。
答案 2 :(得分:0)
对于仍在寻找答案的人,如指出here,您需要设置最小尺寸属性:
imageLabel->setMinimumSize(1, 1);
答案 3 :(得分:0)
试试下面的代码:
layout.setSizeConstraint(QLayout::SetFixedSize);