2011-02-01 168 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()。