2013-02-20 56 views
0

我有一個Qsqlquerymodel表。用戶可以看到並訪問它。我想知道用戶選擇哪個行/行。用戶在Qsqlquerymodel中當前選擇的讀取行

我已經經歷了很多,從QT中心的其他職位和文檔的看着,我想我認爲最接近的就是以某種方式使用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。

如何檢測用戶選擇?

謝謝!

回答

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