我有一张QSqlQueryModel
表。用户可以查看和访问它。我想知道用户选择哪些行/行。
我查看了qt-center的很多其他帖子和文档,我认为最接近的是以某种方式使用QModelIndex
,如下所示:
// for QSqlQueryModel or subclasses:
QSqlQueryModel *qmod = qobject_cast<QSqlQueryModel*>(md);
if(!qmod) return false;
QSqlRecord rec = qmod->record(curr.row()); // you have data inside the "rec" object
取自http://www.qtcentre.org/archive/index.php/t-3104.html。
然而,这对我不起作用。我不想使用Qtableview
,因为我只想使用sqlQueryModel
。
如何检测用户选择?
谢谢!
答案 0 :(得分:2)
QTableView
有一个选择模型。您可以使用该选择模型的currentRowChanged
信号:
YourWidget : public QWidget
{
Q_OBJECT
public:
YourWidget(QWidget *parent = 0);
private slots:
void onRowChanged(QModelIndex index);
}
YourWidget::YourWidget (QWidget *parent) :
QWidget(paret)
{
...
QTableView *view = new QTableView;
view->setModel(yourModel);
connect(view->selectionModel(),
SIGNAL(currentRowChanged(QModelIndex, QModelIndex)),
this,
SLOT(onRowChanged(QModelIndex)));
...
}
void YourWidget::onRowChanged(QModelIndex index)
{
int row = index.row();
QSqlRecord rec = yourModel->record(row);
...
}