设置QTableView宽度取决于模型列

时间:2013-03-30 03:04:24

标签: qt layout

我的数据有自定义QAbstractTableModel,模型目前包含固定数量的列(12)。我还有一个自定义QTableView来显示这个模型。当我将这个小部件添加到我的对话框时,它总是鼓掌最后几列,如

我使用标准布局(QFormLayout,QVBoxLayout)将小部件添加到对话框中,我没有为我的小部件指定minimumSize(),希望布局引擎能够为我计算最佳。

那么,如何设置模型类/ QTableview类以便它会自动扩展以显示所有列?或者我如何使tableView的minimumSize取决于表列的宽度?

(我不想对窗口的像素值进行硬编码,因为每当列发生变化时,我都必须再次手动调整值)

1 个答案:

答案 0 :(得分:0)

如您所见,滚动条位于表格内部,而不是在其外部。当内容不适合视口时,QTableView会扩展QAbstractScrollArea,从而创建它们。视口的最小尺寸由方法QSize QAbstractScrollArea::maximumViewportSize () const控制(顺便说一下,这不是虚拟的)。

我认为,最好的方法是在小部件的析构函数中将QWidget::saveGeometry()(是QMainMindow?)和QTableView::horizontalHeader()->saveState()保存在QSettings中,并在构造函数中重新定位它们