我假设您的表格如下所示:
+--------+--------+---------+
|位置|纬度|经度|
+--------+--------+---------+
| 一个 | 11'.22"| 11'.22" |
+--------+--------+---------+
从上面的代码中可以看出,我得出的结论是,您希望您的用户一次选择一整行。如果是这样,我建议您在您的 上设置以下属性QTableView
:
ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);
ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection);
然后我要connect()
选择模型的selectionChanged信号:
connect(ui->tableView, SIGNAL(selectionChanged(const QItemSelection &, const QItemSelection &),
this, SLOT(onSelectionChanged(const QItemSelection &))));
这是插槽的实现:
void MainWindow::onSelectionChanged(const QItemSelection & selected) {
// Due to selection mode and behavior settings
// we can rely on the following:
// 1. Signal is emited only on selection of a row, not its reset
// 2. It is emited for the whole selected row
// 3. Model selection is always valid and non-empty
// 4. Row indexes of all items in selection match
int rowIndex = selected.indexes().at(0).row();
double latitude = model->index(rowIndex, 1).date().toDouble();
double longitude = model->index(rowIndex, 2).data().toDouble();
// Do whatever you want with the values obtained above
}