我已将滚动区域拖到设计器中,然后我拖了一个标签(imageLabel,用于 setPixmap)。然后我右键单击并将布局设置为网格。
scrollArea = new QS.....
scrollAreaWidgetContents = new QWidget();
gridlayout = new QGri..(scrollAreaWidgetContents);
imageLabel = new QLabel(scrollAreaWidgetContents);
gridLayout->addWidget(imageLabel,.....);
scrollArea->setWidget(scrollAreaWidgetContents);
Run Code Online (Sandbox Code Playgroud)
所以设计师创建了上面的代码,遗漏了一些部分,我现在在我的代码集中有 ui->imageLabel->setPixmap 并尝试做 ui->imageLabel->resize(200,200)。但图像始终为全尺寸 1600x1400 像素)。
网上的代码示例,好像是直接把imageLabel设置成scrollArea,省略了scrollAreaWidgetContents?但我似乎没有从设计师那里实现这一目标?
resize当小部件位于布局内时,大多数情况下会被忽略。
您可以使用setFixedSize或setMinimumSize来强制指定尺寸或小于图像的尺寸。
您还需要将该QLabel scaledContents属性设置为True(在设计器中或使用QLabel::setScaledContents)以将图像缩放到标签尺寸。