在QGridLayout中查找列的最大宽度

时间:2011-02-01 00:15:55

标签: qt layout

我在其中一列中有一个QGridLayout和一个QScrollArea。另外,我在QScrollArea中有一个QGroupBox,在那里我列出了许多组合框。基本上,我想要做的是避免在QScrollArea中有水平滚动条,如果组合框的数量很大,则只有垂直条。这可以通过固定QGroupBox的宽度来完成。

但是,我没有硬编码的大小,而是允许QScrollArea增长尽可能多的列。一旦绘制了元素,它们就会被修复(没有调整大小)。

所以,基本上,如何在QGridLayout中找到列的大小?一旦找到,我就可以相应地限制宽度。

谢谢!

1 个答案:

答案 0 :(得分: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 :: geometry()而不是QLayoutItem :: sizeHint()。

相关问题