QTableView如何以编程方式选择多个列

时间:2014-04-13 16:31:07

标签: c++ qt multiple-columns qtableview qtgui

我正在尝试在代码中选择两列QTableView。不幸的是,当我打电话时

tableView->selectColumn(1)
tableView->selectColumn(2)

选择第1列,取消选择第1列并选择第2列。是否可以在代码中选择多个列?

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]