QItemSelection不会更改QItemSelectionModel :: currentIndex()

时间:2014-07-11 20:23:18

标签: qt

我以编程方式在QTableView中创建选择:

QItemSelectionModel * selectionModel = ui->tableView->selectionModel();
selectionModel->clear();

// Select the whole row
QModelIndex topLeft = tableModel->index(row, 0, QModelIndex());
QModelIndex topRight = tableModel->index(row, tableModel->columnCount()-1, QModelIndex());
QItemSelection selection(topLeft, topRight);
selectionModel->select(selection, QItemSelectionModel::Select);

然后我有PushButton,点击后,获取当前选择的索引:

QModelIndex currentIndex = ui->tableView->selectionModel()->currentIndex();
if (currentIndex.isValid())
{
  // Pop open a dialogue
}

当我使用第一个代码块进行选择时,表格中的行会突出显示。但是,当我点击PushButton对话框未打开时,建议QModelIndex返回的currentIndex()无效。为什么是这样?

我可以通过先在已突出显示的表格行上单击鼠标来弹出对话框。然后当前索引有效。

1 个答案:

答案 0 :(得分:1)

当前索引与选定索引不同。不要混淆这两个概念。一次只能有一个当前索引,但是多个选定的索引。您可以改为检查所选索引:

QModelIndexList indexes = ui->tableView->selectionModel()->selectedIndexes();
if (indexes.size() > 0) {
  // Pop open a dialogue
}