QTableView.setColumnHidden()替代

内纳德

假设我有一个包含30列的表,并且想使用QSqlTableModel / QTableView并仅显示5列。除了25次调用setColumnHidden()函数外,还有其他方法吗?

model = QSqlTableModel(self)
model.setTable("table")
...
view = QTableView()
view.setModel(model)
...
#insane:
view.setColumnHidden(0, True)
view.setColumnHidden(4, True)
view.setColumnHidden(6, True)
view.setColumnHidden(7, True)
view.setColumnHidden(9, True)
view.setColumnHidden(10, True)
view.setColumnHidden(11, True)
...
view.setColumnHidden(29, True)

还有,如果DBA添加了一些我不希望用户看到的新列,该怎么办。对所有已安装的应用程序进行更改以添加一些新的view.setColumnHidden(n,True)行?不太实用。

也许有一些Qt函数,例如view.setColumnsShown([1,2,3,5,8])我不知道吗?

用户名

您可以定义自己的setColumnsShown()函数:

from sets import Set

def setColumnsShown(view, showcols):
    allcols = Set(range(0, view.model().columnCount()))
    for col in allcols.difference(showcols):
        view.setColumnHidden(col, True)

要处理可能添加新列的情况,可以将的columnsInserted()信号连接QSqlTableModel到重新调用的处理函数setColumnsShown

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章