一朵小草 2023-05-11 21:05 采纳率: 45.5%
浏览 23
已结题

学生问一个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);

```

  • 写回答

2条回答 默认 最新

  • 羁旅少年 人工智能新星创作者 2023-05-11 22:05
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月19日
  • 已采纳回答 5月11日
  • 创建了问题 5月11日

悬赏问题

  • ¥15 这个如何解决详细步骤
  • ¥15 在微信h5支付申请中,别人给钱就能用我的软件,这个的所属行业是啥?
  • ¥30 靶向捕获探针设计软件包
  • ¥15 react-diff-viewer组件,如何解决数据量过大卡顿问题
  • ¥20 遥感植被物候指数空间分布图制作
  • ¥15 安装了xlrd库但是import不了…
  • ¥20 Github上传代码没有contribution和activity记录
  • ¥20 SNETCracker
  • ¥15 数学建模大赛交通流量控制
  • ¥15 为什么我安装了open3d但是在调用的时候没有报错但是什么都没有发生呢