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。QObjects 发出各种信号,您可以将这些信号连接到执行操作的函数。在您的情况下,您可能对(实际上由超类 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 回答