我在一个QWidgets
命名中有四个小部件FourWindowWidget
我试图将这四个小部件放在 FourWindowWidget 中作为顶部的一个并保留在其下方,而顶部的小部件应始终具有 FourWindowWidget 大小的 70%。我试过以下:
QSize size = ui->FourWindowWidget->size();
ui->View1->setFixedHeight(size.height()*0.70);
QHBoxLayout * lay = new QHBoxLayout();
lay->addWidget(ui->View2);
lay->addWidget(ui->View3);
lay->addWidget(ui->View4);
lay->setMargin(0);
lay->setContentsMargins(0,0,0,0);
QGridLayout * mainlay = new QGridLayout;
mainlay->addWidget(ui->View1,0,0);
mainlay->setContentsMargins(0,0,0,0);
mainlay->setHorizontalSpacing(0);
mainlay->setSpacing(0);
mainlay->setMargin(0);
mainlay->addLayout(lay,1,0);
delete ui->FourWindowWidget->layout();
ui->FourWindowWidget->setLayout(mainlay);
this->update();
现在的问题是 View1 的大小固定,但 FourWindowWidget 的大小不固定。当我删除它周围的任何其他小部件(例如关闭停靠小部件)时,它会发生变化。这种调整大小是预期的,或者说我不想让它固定。因此,当 FourWindowWidget 调整大小时,它的子小部件应该按照比例设置。但我无法做到这一点,原因 1. 没有任何信号通知调整大小,因此将计算内部小部件的高度。2.没有其他方法我发现在网格布局中设置顶部小部件的 70% 高度而不是 setFixedHeight。
我尝试将 QSizePolicy 设置为 setHieghtForWidth ,但它不是一个有效的解决方案。请建议我以任何方式这样做。
这个问题有点像 Resizing Qt Widgets based on Window size但没有人回答。