2013-02-20 3 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); 
    ... 
}