0

我有一张QSqlQueryModel桌子。用户可以查看和访问它。我想知道用户选择了哪些行/行。

我查看了 qt-centre 的许多其他帖子和文档,我认为我认为最接近的是使用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.

如何检测用户选择?

谢谢!

4

1 回答 1

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);
    ...
}
于 2013-02-21T07:07:06.360 回答