zhangyingjian11 2024-06-04 14:42 采纳率: 0%
浏览 6

QGridLayout尺寸改变不了,求大专业人士看一下

用QT与C++编程,准备编写一个相机显示框架程序。在QGroupBox里面添加了一个QGridLayout,并在QGridLayout加入了10个QLabel用来显示图像,现在分割界面,显示图像都没问题。唯一的问题是QGridLayout不能随着整个窗口尺寸改变而改变,总是显示固定尺寸。求哪位专业人士帮忙出出主意,怎么能让QGridLayout随着窗口大小改变而改变。重写了resizeEvent(QResizeEvent * event)也没有效果,QGridLayout尺寸始终不变。

img

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-04 14:43
    关注

    引自免费微信小程序:皆我百晓生

    为了确保QGridLayout随窗口大小改变而改变,你需要正确设置相关控件的大小策略(size policy)以及父窗口的布局管理器。以下是针对你的代码进行修改的建议:

    首先,为QGridLayout设置合适的大小策略。在初始化QGridLayout时,将大小策略设置为QSizePolicy::Expanding,这会使得网格布局能够适应其容器的变化。

    // 在构造函数或者合适的地方设置QGridLayout的大小策略
    ui->gridLayout->setHorizontalSpacing(0);
    ui->gridLayout->setVerticalSpacing(0);
    ui->gridLayout->setContentsMargins(0, 0, 0, 0);
    
    // 设置大小策略
    QSizePolicy sizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
    ui->gridLayout->setSizePolicy(sizePolicy);
    

    然后,确保QGroupBox使用了合适的布局管理器。这里推荐使用QVBoxLayout,并设置其大小策略为QSizePolicy::MinimumExpanding,这样当窗口大小变化时,QGroupBox会尽可能地填充空间,同时保持内部网格布局随窗口大小变化。

    // 在构造函数或者合适的地方设置QGroupBox的布局管理器
    QVBoxLayout* groupBoxLayout = new QVBoxLayout(ui->groupBoxShow);
    groupBoxLayout->setMargin(0);
    groupBoxLayout->setSpacing(0);
    
    // 添加QGridLayout到QGroupBox,并设置大小策略
    groupBoxLayout->addWidget(ui->gridLayout);
    QSizePolicy groupBoxSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
    groupBox->setLayout(groupBoxLayout);
    groupBox->setSizePolicy(groupBoxSizePolicy);
    

    最后,在resizeEvent()中不需要手动设置QGridLayout的几何位置,因为已经设置了正确的大小策略。只需保留窗口本身的大小更新即可。

    void ImageGrabFrame::resizeEvent(QResizeEvent *event)
    {
        // 不需要设置QGridLayout的几何位置,因为它会自动跟随窗口大小变化
    }
    

    这样应该可以实现QGridLayout随窗口大小变化而改变的效果。如果你还有其他问题,例如如何将10个QLabel添加到QGridLayout中,或者如何显示图像,请随时告诉我。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月4日

悬赏问题

  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
  • ¥15 虚拟机检测,可以是封装好的DLL,可付费
  • ¥15 kafka无法正常启动(只启动了一瞬间会然后挂了)
  • ¥15 Workbench中材料库无法更新,如何解决?
  • ¥20 如何推断此服务器配置
  • ¥15 关于github的项目怎么在pycharm上面运行