QTableView“ResizeToContents”列太宽,启用排序
Posted
技术标签:
【中文标题】QTableView“ResizeToContents”列太宽,启用排序【英文标题】:QTableView "ResizeToContents" columns are too wide with sorting enabled 【发布时间】:2012-09-24 21:21:23 【问题描述】:我有两个相同的 QTableView,其中一个是可排序的。这两个表的最后四列的大小调整模式设置为 QHeaderView::ResizeToContents。
不可排序的表格列宽看起来是正确的,列标题的左右边缘只有几个像素的填充。但是可排序表的列宽在列标题的左右边缘增加了大约 30 个像素,使得它们比需要的宽得多。
除了单行 setSortingEnabled(bool) 之外,这些表及其模型的构造是相同的。
这是设计使然,还是有办法从可排序表中删除所有这些额外的填充?
【问题讨论】:
【参考方案1】:额外填充的原因是由于需要QHeaderView
来绘制排序指示符。因此,如果您希望有一个关于表格当前排序状态的可见指示符,那么我建议您将额外的填充留在那里。否则,您可以执行以下操作:
table->setSortingEnabled( true );
table->horizontalHeader()->setSortIndicatorShown( false );
请注意,这些函数调用的顺序很重要。
还可以继承 QHeaderView
并覆盖虚拟 sectionSizeFromContents()
函数并对其进行自定义以满足您的特定需求。
【讨论】:
我对排序指示器需要填充也有同样的想法。但是,指示器绘制在文本上方的中心,而不是侧面(至少,对于这种特定的外观)。谢谢你的建议。 更新了另一个潜在解决方案的答案。以上是关于QTableView“ResizeToContents”列太宽,启用排序的主要内容,如果未能解决你的问题,请参考以下文章