首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保持高宽比最小化/最大化时显示图像?

保持高宽比最小化/最大化时显示图像?
EN

Stack Overflow用户
提问于 2012-06-17 21:24:58
回答 1查看 1.6K关注 0票数 2

我正在尝试用qt创建者来实现一个可伸缩的图像小部件,它将保持图像的纵横比。我发现的所有示例或帖子都建议扩展QLabel并重新实现resizeEvent。这是我所做的,它几乎是有效的,但对于一些问题。

  1. 当主窗口第一次打开时,图像略有增长,并扩展主窗口的大小(这不是太大的问题)。
  2. 当我最大化窗口时,所有的图像都会放大,但是当我不最大化窗口时,图像就不会缩小。

我尝试过更改resizeEvents的QLabel子类(称为ClickableImage)和包含ClickableImage布局的父小部件。这是一些相关的代码。

代码语言:javascript
复制
void ClickableImage::resizeEvent(QResizeEvent *e)
{
    qDebug() << "Resizing : " << ticker;
    ticker++;

    int w = e->size().width();
    int h = e->size().height();

    qDebug() << "W : " << w;
    qDebug() << "H : " << h;

    image = QPixmap(fname);
    image = image.scaled(w-7, h-7, Qt::KeepAspectRatio);
    setPixmap(image);
}

另外,我读过以下资料,

Qt:调整包含QLabel的QPixmap大小,同时保持其纵横比

https://docs.huihoo.com/qt/4.2/desktop-screenshot.html

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2012-06-26 07:59:31

我有四件事你应该试试。如果您输入一个更大的代码示例,我可能会为您尝试一下,但下面是我为您提供的内容:

  1. 您可能需要在调整大小事件结束时调用adjustSize()。您可能不需要一个update()调用,但是您可以尝试在其中放置一个,看看它是否会产生影响。
  2. 最小化事件应该与hideEvent()相同,因此,如果您希望它在最小化上更改图像大小,也可以在其中添加一些图像缩放。
  3. 窗口和对话框小部件上的文档可能有助于进行一些调整,但它也可能是在小部件调整大小时设置其大小的递归性质的一部分。
  4. 替代所有这些的方法是让小部件为您计算大小大小。QLabel有一个选项,可以根据允许使用的大小来缩放其内容,因此如果您创建一个QLabel,设置其像素映射并设置scale contents属性,那么它将在调整大小时自动为您进行快速缩放。为了最小化,您可能仍然需要将其缩小。

希望这能有所帮助。如果你还有问题,请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11074900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档