我有两个相同的QTableViews,其中一个是可排序的。这两个表都有最后四列,其调整大小模式设置为QHeaderView :: ResizeToContents。
不可排序的表格列宽似乎正确,在列标题的左右边缘只有几个像素的填充。但是可排序的表格列宽度增加了大约30个像素到列标题的左右边缘,使它们比它们需要的宽得多。
这些表及其模型的构造是相同的,除了单行setSortingEnabled(bool)。
这是设计,还是有办法从可排序表中删除所有这些额外的填充?
答案 0 :(得分:3)
额外填充的原因是需要QHeaderView
绘制排序指示符。所以,如果你希望有一个关于表的当前排序状态的可见指示符,那么我建议你在那里留下额外的填充。否则,您可以执行以下操作:
table->setSortingEnabled( true );
table->horizontalHeader()->setSortIndicatorShown( false );
请注意,这些函数调用的顺序很重要。
也可以继承QHeaderView
并覆盖虚拟sectionSizeFromContents()
功能并对其进行自定义以满足您的特定需求。