我正在尝试在代码中选择两列QTableView。不幸的是,当我打电话时
tableView->selectColumn(1)
tableView->selectColumn(2)
选择第1列,取消选择第1列并选择第2列。是否可以在代码中选择多个列?
答案 0 :(得分:2)
如果您只是需要确保允许用户选择多个列,则需要to set up proper 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,然后根据您的需要进行修改。
答案 1 :(得分:1)
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]