假设我有一个包含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] 删除。
我来说两句