QFormLayout的行高相等

时间:2018-01-30 18:00:51

标签: qt

我在左栏中使用QFormLayout QLabels,右栏中使用各种小部件。在右侧,有标签,复选框,组合或线编辑。不幸的是,每个控件都有不同的自然高度。但我想让表单布局中的每一行具有由最大的一行确定的相等高度(我知道它在哪一行)。有没有简单的方法来实现这一目标?我找不到像QFormLayout::setRowHeight()这样的内容。

1 个答案:

答案 0 :(得分:1)

一种解决方案,只需在运行时使用以下函数为所有小部件分配相同的大小:

void setEqualRowHeight(QFormLayout *formLayout, int height)
{
    QWidget *w;
    for(int i = 0; i < formLayout->rowCount(); i++) {
        QLayoutItem *item = formLayout->itemAt(i, QFormLayout::FieldRole);
        if (item && (w = item->widget())) {
            w->setFixedHeight(height);
        }
    }
}