用QT与C++编程,准备编写一个相机显示框架程序。在QGroupBox里面添加了一个QGridLayout,并在QGridLayout加入了10个QLabel用来显示图像,现在分割界面,显示图像都没问题。唯一的问题是QGridLayout不能随着整个窗口尺寸改变而改变,总是显示固定尺寸。求哪位专业人士帮忙出出主意,怎么能让QGridLayout随着窗口大小改变而改变。重写了resizeEvent(QResizeEvent * event)也没有效果,QGridLayout尺寸始终不变。
QGridLayout尺寸改变不了,求大专业人士看一下
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
为了确保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中,或者如何显示图像,请随时告诉我。
解决评论 打赏 举报 编辑记录无用 1
悬赏问题
- ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
- ¥20 手机截图相片分辨率降低一半
- ¥50 求一段sql语句,遇到小难题了,可以50米解决
- ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
- ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)
- ¥15 虚拟机检测,可以是封装好的DLL,可付费
- ¥15 kafka无法正常启动(只启动了一瞬间会然后挂了)
- ¥15 Workbench中材料库无法更新,如何解决?
- ¥20 如何推断此服务器配置
- ¥15 关于github的项目怎么在pycharm上面运行