0

次のコードがあります。

model = new QStandardItemModel();
channel = new QTableView(this);
channel->setModel(model);

model->setData(model->index(d,0,QModelIndex()), 0 );
model->setData(model->index(d,1,QModelIndex()),Channel);
model->setData(model->index(d,2,QModelIndex()),Unit);
model->setData(model->index(d,3,QModelIndex()),dimension);
model->setData(model->index(d,4,QModelIndex()),code);
model->setData(model->index(d,5,QModelIndex()),description);

ボックスをクリックするだけで、選択したフィールドの行番号を返すことができます。

これを行う方法はありますか?

4

1 に答える 1

0

あなたが参照しているのはSIGNALS および SLOTSと呼ばれます。QObject は、アクションを実行する関数に接続できるさまざまなシグナルを発します。あなたの場合、おそらく(実際にはスーパークラスQAbstractItemViewによって提供される)のclickedシグナルに興味がありますQTableView

connect(channel, SIGNAL(clicked(QModelIndex), 
           this, SLOT(handleTableClick()));

handleTableClick実際には任意の名前を付けることができ、このシグナルを処理するために定義したパブリック SLOT になります。

public slots:
    void handleTableClick(const QModelIndex &);

ユーザーが有効なセルをクリックすると、スロットが呼び出され、QModelIndex が渡されます。そこから行を調べることができます。

void Foo::handleTableClick(const QModelIndex &idx) {
    int row = idx.row();
}
于 2012-08-09T20:55:52.997 に答える