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
在小部件位于布局内时大部分时间都会被忽略。
您可以使用setFixedSize
或setMinimumSize
代替强制大小或小于图像的大小。
您还需要将QLabel
scaledContents
属性设置为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里,具体怎么做,最好给个例子