2011-02-01 64 views
0

我在其中一列中有一個QGridLayout和一個QScrollArea。另外,我在QScrollArea中有一個QGroupBox,我在其中列出了許多組合框。基本上,我想要做的是避免在QScrollArea中有水平滾動條,並且如果組合框的數量很大,只有垂直條。這可以通過固定QGroupBox的寬度來完成。查找QGridLayout中列的最大寬度

但是,我沒有硬編碼的大小,而是允許QScrollArea增長儘可能多的列允許。一旦元素被繪製出來,它們就被修復了(沒有調整大小)。

所以,基本上,我怎麼能找到QGridLayout列的大小?一旦我發現,我可以相應地限制寬度。

謝謝!

回答

0

如果你想要的是避免顯示QScrollArea內水平滾動條,只需撥打

QScrollArea::setHorizontalScrollBarPolicy() 

使用Qt :: ScrollBarAlwaysOff。爲了得到一個QGridLayout單元格的寬度和高度,使用下面的代碼:

QSize getLayoutCellSize(QGridLayout *layout, int row, int column) 
{ 
    QLayoutItem *item = layout->itemAtPosition(row, column); 
    if (item) 
     return (item->sizeHint()); 
    return (QSize()); 
} 

您可能還可以使用QLayoutItem ::幾何()代替QLayoutItem :: sizeHint()。