我在QWidgets
中有4個窗口小部件,名爲FourWindowWidget
我試圖將這四個窗口小部件放在FourWindowWidget中作爲一個在頂部,剩下的部分應該總是有70% FourWindowWidget的大小。我試過如下:當調整父窗口小部件時保持縱橫比調整子窗口小部件
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設置爲setHeghtForWidth,但iit不是工作解決方案。 請建議我以任何方式做到這一點。
這個問題是Resizing Qt Widgets based on Window size的重複,但沒有人回答。
您是否嘗試過爲您的佈局設置'setColumnStretch' /'setRowStretch'方法? –
@DmitrySazonov我試過了不行。 – Tab
請提供代碼示例,你在哪裏做過。子窗口小部件的尺寸策略不應該被修復。 –