下面的代码创建了一个由Model / Proxy框架驱动的单个QTableView。
self.headerNames
中声明的source-model
list-variable存储了Header列的名称。相同source model
的{{1}}方法使用此列表中的名称数来返回视图中的列数:
columnCount()
def columnCount(self, parent=QModelIndex()):
return len(self.headerNames)
模型Proxy
通过headerData()
访问此self.headerNames
变量:
source model
在sourceModel=self.sourceModel()
上,代理检索并将列的名称返回给QTableView:
if role==Qt.DisplayRole
在标题栏右键单击上实施了右键单击菜单。 那部分工作正常。但由于我找不到其他人如何做的例子,我不得不设计自己如何运作。如果你发现它可以改进,我将不胜感激。
接下来要实现的是能够以任意顺序重新排列列。但我不知道从哪里开始。
P.S。请忽略QTableView中显示的项目名称。 我希望尽可能简化代码,只关注Header / Column主题。
return QVariant( sourceModel.headerNames[column] )
答案 0 :(得分:5)
如果你真的想自己重新安排专栏:
您可以通过horizontalHeader
的{{3}}和moveSection方法移动或交换部分。
headerView.moveSection(x, y)
之后会移动列x
以使其成为y
列,而
headerView.swapSections(x,y)
将 - 显然 - 交换两列的位置。
答案 1 :(得分:0)
感谢您在标题列右键单击示例中实现的右键单击菜单。正确地寻找与您相同的功能。重新勾选勾号后,该栏只应显示一件事,即您的app.run(port=5555)
应写为:
resHeaderMenuTriggered()