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