QTableView" ResizeToContents"列太宽,启用了排序

时间:2012-09-24 21:21:24

标签: qt qtableview

我有两个相同的QTableViews,其中一个是可排序的。这两个表都有最后四列,其调整大小模式设置为QHeaderView :: ResizeToContents。

不可排序的表格列宽似乎正确,在列标题的左右边缘只有几个像素的填充。但是可排序的表格列宽度增加了大约30个像素到列标题的左右边缘,使它们比它们需要的宽得多。

这些表及其模型的构造是相同的,除了单行setSortingEnabled(bool)。

这是设计,还是有办法从可排序表中删除所有这些额外的填充?

1 个答案:

答案 0 :(得分:3)

额外填充的原因是需要QHeaderView绘制排序指示符。所以,如果你希望有一个关于表的当前排序状态的可见指示符,那么我建议你在那里留下额外的填充。否则,您可以执行以下操作:

table->setSortingEnabled( true );
table->horizontalHeader()->setSortIndicatorShown( false );

请注意,这些函数调用的顺序很重要。

也可以继承QHeaderView并覆盖虚拟sectionSizeFromContents()功能并对其进行自定义以满足您的特定需求。