Qt,Designer 在scrollArea 中创建scrollAreaWidgetContents,我无法调整图像标签的大小

Posted

技术标签:

【中文标题】Qt,Designer 在scrollArea 中创建scrollAreaWidgetContents,我无法调整图像标签的大小【英文标题】:Qt, Designer creates scrollAreaWidgetContents in scrollArea, and i cant resize my imagelabel 【发布时间】:2011-09-21 04:55:18 【问题描述】:

我已将滚动区域拖到设计器中,然后我拖了一个标签(imageLabel,用于 setPixmap)。然后我右键单击并将布局设置为网格。

scrollArea = new QS.....
scrollAreaWidgetContents = new QWidget();
gridlayout = new QGri..(scrollAreaWidgetContents);
imageLabel = new QLabel(scrollAreaWidgetContents);
gridLayout->addWidget(imageLabel,.....);

scrollArea->setWidget(scrollAreaWidgetContents);

所以设计师已经创建了上面的代码,遗漏了几个部分,我现在在我的代码集中设置了 ui->imageLabel->setPixmap 并尝试执行 ui->imageLabel->resize(200,200)。但图像始终为全尺寸 1600x1400 像素)。

网上的代码示例,好像都是直接把imageLabel设置成scrollArea,省略了scrollAreaWidgetContents?但我似乎没有从设计师那里做到这一点?

【问题讨论】:

【参考方案1】:

resize 在小部件位于布局内时大部分时间都会被忽略。

您可以使用setFixedSizesetMinimumSize 代替强制大小或小于图像的大小。

您还需要将QLabelscaledContents 属性设置为True(在设计器中或使用QLabel::setScaledContents)以将图像缩放到标签大小。

【讨论】:

是的,我发现它是一些 setScaledContent 并且滚动小部件上的属性也有一些影响。从 Qt Docs 上的 Image Viewer Example 中找到。 setScaledContents(true) 将缩放图像以适合 QLabel。【参考方案2】:

在设计器中创建布局。将布局边距更改为零。这应该会产生与从链中删除 scrollAreaWidgetContents 相同的结果,但可以通过设计器实现。

【讨论】:

以上是关于Qt,Designer 在scrollArea 中创建scrollAreaWidgetContents,我无法调整图像标签的大小的主要内容,如果未能解决你的问题,请参考以下文章

Qt 自定义小部件如何通知 ScrollArea 父级视图更改

QT如何使用scrollarea和Label(或者TextEdit)显示很多的内容

qt里如何实现点一下按钮,就把一个界面显示到当前界面上的scrollArea里,具体怎么做,最好给个例子

是否可以在 Qt Designer 中使用来自 Qt Designer 的 .ui 文件作为自定义小部件?

如何在 Qt-Designer 中使用自定义小部件

使用 PySide2 在 Qt-Designer 中嵌入 PyQtGraph