我在名为QWidgets
的{{1}}中有四个小部件我试图将这四个小部件放在FourWindowWidget中作为顶部并保持在其中,而顶部小部件应始终具有70%的大小FourWindowWidget。我试过以下:
FourWindowWidget
现在问题是现在View1有固定的大小,但FourWindowWidget的大小不固定。当我删除其周围的任何其他小部件时,它会更改,例如关闭停靠小部这个调整大小是预期的,或者说我不想修复它。因此,当FourWindowWidget调整大小时,其子窗口小部件应按照比例设置。但我无法做到这一点 1.没有任何信号通知调整大小,因此将计算内部小部件的高度。 2.没有其他方法我发现在网格布局中设置顶部小部件的70%高度而不是setFixedHeight。
我尝试过将QSizePolicy设置为setHieghtForWidth但是iit不是一个可行的解决方案。 请建议我以任何方式这样做。
该问题与Resizing Qt Widgets based on Window size有点重复,但没有人回答。
答案 0 :(得分:2)
设置布局的拉伸系数应该有效。当您在同一列中添加所有内容时,我不确定为什么要使用网格布局,但这是一个有效的示例:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
gridLayout = new QGridLayout;
this->centralWidget()->setLayout(gridLayout);
label1 = new QLabel("l1");
label2 = new QLabel("l2");
label3 = new QLabel("l3");
label4 = new QLabel("l4");
gridLayout->addWidget(label1, 0, 0);
gridLayout->addWidget(label2, 1, 0);
gridLayout->addWidget(label3, 2, 0);
gridLayout->addWidget(label4, 3, 0);
gridLayout->setRowStretch(0,7);
gridLayout->setRowStretch(1,1);
gridLayout->setRowStretch(2,1);
gridLayout->setRowStretch(3,1);
}
在此示例中,label1
将占用可用垂直空间的70%,而其他标签将占用可用垂直空间的30%。