我想在代碼中選擇兩列QTableView。不幸的是,當我打電話時QTableView如何以編程方式選擇多列
tableView->selectColumn(1)
tableView->selectColumn(2)
它選擇第1列,取消選擇第1列並選擇第2列。是否可以在代碼中選擇多個列?
我想在代碼中選擇兩列QTableView。不幸的是,當我打電話時QTableView如何以編程方式選擇多列
tableView->selectColumn(1)
tableView->selectColumn(2)
它選擇第1列,取消選擇第1列並選擇第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,然後修改以滿足您的需要。
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]
謝謝!這是我所期待的。 –