2014-04-13 91 views
2

我想在代碼中選擇兩列QTableView。不幸的是,當我打電話時QTableView如何以編程方式選擇多列

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

它選擇第1列,取消選擇第1列並選擇第2列。是否可以在代碼中選擇多個列?

回答

2

如果你只需要確保允許用戶選擇多列,您需要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,然後修改以滿足您的需要。

+0

謝謝!這是我所期待的。 –

0

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] 
相關問題