我有一个应用程序,其中有一个QWidget
。此QWidget使用垂直方向的QSplitter
分为两部分。
这两部分是:
左侧的QTreeWidget
;
QTableView
。
QTableView中使用的模型继承自QAbstractTableModel。
当我在QTreeWidget中选择一行时,应更新右侧的QTableView。 QtableView应按升序显示行号,一列应显示对象名称。为了显示行号,我使用QAbstractTablemodel的setHeaderData
作为垂直标题
我在使用该功能时遇到了一些问题。
问题
我还使用QSortFilterProxyModel
对对象名称列进行排序。我面临的问题是,当我通过单击列的水平标题对对象名称进行排序,然后选择行时,垂直标题中的行号会发生变化。
在对对象名称列进行排序时,有没有办法在纵向显示行号而不更改?
答案 0 :(得分:0)
我有同样的问题。我的解决方法: 设置两个QTableViews彼此相邻。左边的那个使用未排序的模型。右侧的QTableView使用排序代理模型。 现在在(未排序的)模型中添加一列,返回行+1。 在右表中隐藏此列。在左表中隐藏除此列之外的所有列。 现在你只需要调整UI,所以间距不是问题。 如果右侧的表格滚动,则必须将该事件同步到右侧的表格。