1

我是 QT 新手,我想使用 QT 开发一个图像手动注释工具,它可以加载图像并允许用户对其进行注释。我查看了图像查看器演示,并决定使用 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)可以扩展以适应大图像,但是当我加载小尺寸图像时,它无法缩小到该图像的大小。这里出了什么问题?

非常感谢。

4

4 回答 4

1

对于仍在寻找答案的人,正如此处所指出的,您需要设置最小尺寸属性:

 imageLabel->setMinimumSize(1, 1);
于 2018-04-13T14:19:30.567 回答
0

我相信您的问题是您正在设置的大小策略,请尝试使用 QSizePolicy::Minimum 而不是 QSizePolicy::Expanding。

于 2012-07-13T14:58:11.480 回答
0

为了完整起见,将标签的size Policy设置为“Maximum”是最快的方式。

于 2016-01-22T13:29:08.623 回答
0

只需尝试以下代码:

layout.setSizeConstraint(QLayout::SetFixedSize);
于 2021-01-06T08:37:39.787 回答