2013-10-07 98 views
0

我在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的重複,但沒有人回答。

+1

您是否嘗試過爲您的佈局設置'setColumnStretch' /'setRowStretch'方法? –

+0

@DmitrySazonov我試過了不行。 – Tab

+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%。

+0

我剛剛爲第0行設置了1,並且這是不適當的參數來獲得70%的解釋。謝謝。 – Tab

+1

@Tab如果您將來遇到佈局問題,[本示例](http://qt-project.org/doc/qt-4.8/layouts-basiclayouts.html)可能會幫助您解決問題。 – thuga

+0

感謝您的鏈接! – Tab

相關問題