如何使Qt网格布局自动调整列宽的大小

How to Make Qt Grid Layout Auto Size Column Widths

本文关键字:调整 Qt 何使 网格 布局      更新时间:2023-10-16

我有一个带有网格布局的QDialog。网格宽 5 列,行数可变。QDialog从一个预构建的 UI 开始,该 UI 在 5 列中的每一列中都有一个标签。网格的其余部分按如下方式构建。对于添加的每一行:

  • a QLineEdit 被添加到 col 0
  • QComboBox 被添加到 cols 1-3 中,每个 cols 都有一个变量和不同数量的项目
  • 将 QCheckBox 添加到 col 4 中

完成此操作后,第 0 列是最宽的列。第 1-4 列的宽度相同。某些组合框项目(列 1-3)太宽而无法看到并显示为"..."。复选框列 (4) 的宽度超过其需要的宽度。我尝试在那里的每个该死的小部件(包括对话框本身)上使用QWidget::adjustSize(),但我无法让它自动调整大小以适应所有内容。在尝试调试它时,我打印出了每列的小部件的宽度,但我看到的值与我在屏幕上看到的值完全不同。我的印象是网格布局会自动调整每列中的每个小部件,使其足够宽以适合最宽的项目,但它似乎没有这样做。有没有某种setAutoColumnWidth属性或其他东西?

如果要

设置布局列的宽度,可以为布局内的微件设置拉伸值。例如,将所有小部件的水平拉伸设置为1宽度相等:

lineEdit->sizePolicy().setHorizontalStretch(1);
comboBox1->sizePolicy().setHorizontalStretch(1);
comboBox2->sizePolicy().setHorizontalStretch(1); 
comboBox3->sizePolicy().setHorizontalStretch(1); 
checkBox->sizePolicy().setHorizontalStretch(1);

如果您希望特定列更宽,请为该列中的小组件设置更高的拉伸值。