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 に答える