学生问一个Qt关于widget问题!

实际上最近有一个需求:怎么样能把多个自定义的widget窗体给插入到一个窗体里呢,然后他可以以滚动条的形式显示。

比如下面这个例子,我这样循环插入10个widget,运行后首先并没有发现滚动条,这不是我要的结果。他插入的时候往往图片显示不全。但是把自定义窗体换成toolButton或者pushButton这样的小空间,那插入多了倒是会出现滚动条,显示也是正常。这是为什么呢?
请各位教一教我,谢谢。我用chatGPT3.5完全得不到想要的答案


```c++
    ui->scrollArea->setWidgetResizable(true);//设置滚动区域自适应大小
    for(int i=0;i<10;i++)
    {
        havePicutre *h=new havePicutre(this);
        ui->verticalLayout_3->addWidget(h);
        ui->verticalLayout_3->addWidget(h);

```

在你的代码中,你需要设置滚动区域的内容窗口(content widget),以便它能正确地包含所有的子窗口并使滚动条生效。你可以通过将所有自定义窗口添加到一个新的QWidget上,然后将这个QWidget设置为滚动区域的内容窗口来实现。



ui->scrollArea->setWidgetResizable(true); // 设置滚动区域自适应大小

QWidget *contentWidget = new QWidget(); // 创建一个新的QWidget作为滚动区域的内容窗口
QVBoxLayout *contentLayout = new QVBoxLayout(contentWidget); // 为内容窗口创建一个垂直布局

for (int i = 0; i < 10; i++)
{
    havePicutre *h = new havePicutre(this);
    contentLayout->addWidget(h); // 将自定义窗口添加到内容窗口的布局中
}

contentWidget->setLayout(contentLayout); // 将布局设置为内容窗口的布局
ui->scrollArea->setWidget(contentWidget); // 将内容窗口设置为滚动区域的内容窗口


当你使用toolButton或pushButton等较小的控件时,它们本身的尺寸较小,所以嵌入到滚动区域时能够正常显示。然而,当你使用自定义窗口时,可能需要更多的空间来显示,因此需要正确设置内容窗口和布局来保证滚动条和显示效果。

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^