读取用户当前在Qsqlquerymodel中选择的行

时间:2013-02-20 22:33:17

标签: qt qt4 qsqlquery

我有一张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

如何检测用户选择?

谢谢!

1 个答案:

答案 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);
    ...
}