我想你的桌子是这样的:
+--------+--------+---------+
|Location|Latitude|Longitude|
+--------+--------+---------+
| A | 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
}