2013-03-15 30 views
1

我試圖創建具有以下佈局的窗口小部件:問題與插入部件的QGridLayout

enter image description here

我試了幾種方法,在我的第一個,我用了一個QVBoxLayout給我加了不同的小工具使用QGridLayout(所以我會得到我想要的水平調整大小)。

//pseudo code, just to show what I tried... 
myHeaderWidget::myHeaderWidget() { 
    QGridLayout* layout = new QGridLayout; 

    layout->addWidget(new QCheckBox(), 0, 0, 1, -1, Qt::AlignRight | Qt::AlignTop); 
    setLayout(layout); 
} 


oneOfMyOtherWidgets::oneOfMyOtherWidgets() { 
    QGridLayout* layout = new QGridLayout; 

    layout->addWidget(new QCheckBox(), 0, 0, 1, 1, Qt::AlignLeft | Qt::AlignTop); 
    layout->addWidget(new QPushButton(), 0, 1, 1, -1, Qt::AlignLeft | Qt::AlignTop); 

    setLayout(layout); 
} 


mydialog::mydialog() { 
    QVBoxLayout* layout = new QVBoxLayout; 
    setLayout(layout); 

    layout->addWidget(new myHeaderWidget, 0, Qt::AlignRight); 
    //here was the third widget containing Descr1 and Description2, as 
    //drawn in image above 
    layout->addWidget(new oneOfMyOtherWidgets, 0, Qt::AlignLeft); 
}  

第二種方法是使用一個QGridWidget作爲佈局mydialog,和我的第三個方法是將所有這些項目添加到mydialog相同QGridWidget。

所有這些結果是相同的,對我來說陌生,行爲: 在任何時候,我創建的對話,並呼籲秀(),執行下列操作之一可能發生:

  1. 所有項目都在畫我想要的方式。
  2. 顯示左側的複選框,但右側的按鈕覆蓋了複選框
  3. 的描述左側的複選框是正確的,但我找不到按鈕。
  4. 按鈕佔用了所有空間,你根本看不到任何複選框。

可能有人給我一個提示,我做錯了什麼,或者告訴我一種方法來創建我在圖像中繪製的佈局?

+0

感謝您展示您的示例,我不知道您可以在addWidget期間對齊:D – Saebin 2015-01-30 20:04:35

回答

1

由我自己發現:

setColumnStretch(0,1); 

失蹤了。添加的小部件佔用了整個單元的空間,但單元格從未長大。