我以编程方式在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()
无效。为什么是这样?
我可以通过先在已突出显示的表格行上单击鼠标来弹出对话框。然后当前索引有效。
答案 0 :(得分:1)
当前索引与选定索引不同。不要混淆这两个概念。一次只能有一个当前索引,但是多个选定的索引。您可以改为检查所选索引:
QModelIndexList indexes = ui->tableView->selectionModel()->selectedIndexes();
if (indexes.size() > 0) {
// Pop open a dialogue
}