正如其他人已經指出,它不是你想要的QTableWidget
。這確實是QTableView
。獲取記錄,然後做這樣的:
static QList<QSqlRecord> selected_records(const QTableView * tv) {
// make sure we're really dealing with what we think we're dealing with:
assert(static_cast<QSqlTableModel*>(tv->model())
== qobject_cast<QSqlTableModel*>(tv->model());
const QSqlTableModel * const tm = static_cast<QSqlTableModel*>(tv->model());
const QModelIndexList mil = tv->selectionModel()->selectedRows();
QList<QSqlRecord> result;
Q_FOREACH(const QModelIndex & mi, mil)
if (mi.isValid())
result.push_back(tm->record(mi.row()));
return result;
}
如果OTOH,您在連接到一個時隙工作 - 說 - 的QTableView
(真:QAbstractItemView
)clicked(QModelIndex)
信號,那麼這段代碼是你想要什麼:
void slotClicked(const QModelIndex & mi) {
// make sure we're really dealing with what we think we're dealing with:
assert(static_cast<QSqlTableModel*>(tableView->model())
== qobject_cast<QSqlTableModel*>(tableView->model());
const QSqlRecord rec = static_cast<QSqlTableModel*>(tableView->model())
->record(mi.row());
// use 'rec'
}
是的,Qt可以有內置的,特別是。 QSqlTableModel
可以有一個更方便的方法來映射QModelIndex
回到QSqlRecord
,但你去。
我需要記錄在一個小區,但它沒有座標。 – crew4ok 2009-07-16 15:01:02