QTableView 如何以编程方式选择多个列
Posted
技术标签:
【中文标题】QTableView 如何以编程方式选择多个列【英文标题】:QTableView How to select multiple columns programmatically 【发布时间】:2014-04-13 16:31:07 【问题描述】:我正在尝试在代码中选择 QTableView 的两列。不幸的是,当我打电话时
tableView->selectColumn(1)
tableView->selectColumn(2)
它选择第一列,取消选择第一列并选择第二列。是否可以在代码中选择多列?
【问题讨论】:
【参考方案1】:如果只需要保证允许用户选择多列,则需要to set upproper selection mode如下:
tableView->setSelectionMode(QAbstractItemView::MultiSelection);
如果您想以编程方式执行此操作,这就是这样做的方式:
QModelIndexList itemSelection = tableView->selectionModel()->selectedColumns();
int currentColumn = itemSelection.first().column();
QItemSelection selectedItems = tableView->selectionModel()->selection();
tableView->selectColumn(1);
selectedItems.merge(tableView->selectionModel()->selection(), QItemSelectionModel::Select);
tableView->selectColumn(2);
selectedItems.merge(tableView->selectionModel()->selection(), QItemSelectionModel::Select);
tableView->selectionModel()->clearSelection();
tableView->selectionModel()->select(selectedItems, QItemSelectionModel::Select);
免责声明:代码已采用from here,然后根据您的需要进行修改。
【讨论】:
谢谢!这就是我要找的。span> 【参考方案2】:selectionModel.select()
在其 选择列 模式下可能更可取。
在 PyQt 中:
columns = [1,2,3]
indexes = [model.index(0, c) for c in columns]
mode = QtCore.QItemSelectionModel.Select | QtCore.QItemSelectionModel.Columns
[tableView.selectionModel().select(index, mode) for i in indexes]
【讨论】:
以上是关于QTableView 如何以编程方式选择多个列的主要内容,如果未能解决你的问题,请参考以下文章
pyqt qt4 QTableView 如何禁用某些列的排序?