19

我正在尝试在QTableView. 例如:

QString codestring = "*" + ui->tblInventory->indexAt(QPoint(0,2)).data().toString() + "*";

这应该会在我的QTableView. 问题是,这不是它在做什么!无论我在 中传递什么参数QPoint()indexAt()我都会在单元格 0,0 处获得文本。我不知道这是为什么……有什么帮助吗?谢谢!

[编辑]
我也试过这个:

QString codestring = "*" + ui->tblInventory->model()->data(ui->tblInventory->indexAt(QPoint(0,2))).toString() + "*";

[编辑 2] 试图找出发生了什么,我输入了这行代码:

qDebug()<< ui->tblInventory->indexAt(QPoint(2,2)).row() << " and " <<  ui->tblInventory->indexAt(QPoint(2,2)).column();

它应该获取QModelIndex单元格 2,2 并输出其行和列,当然应该是 2 和 2。但是,我得到 0 和 0!所以看起来这可能是一个问题QTableView::indexAt(),无论是我的使用还是某种错误。任何人都可以解释一下吗?

4

4 回答 4

29

解决方法:

ui->tblInventory->model()->data(ui->tblInventory->model()->index(0,2)).toString()

不太清楚为什么上述方法不起作用,但确实如此。谢谢您的帮助。

于 2010-11-21T08:30:58.027 回答
10

这一个也有效,而且更短:

QModelIndex index = model->index(row, col, QModelIndex());

ui->tblInventory->model()->data(index).toString();

model使用的顶部是绑定到此的 QAbstractModel tblInventory

于 2013-06-16T11:10:22.973 回答
0

检查data()您的 QTableView 使用的模型提供的功能,您描述的效果可能是由于其中的错误而观察到的。

于 2010-11-21T08:03:18.093 回答
0

尝试这个:

QModelIndex index = ui->tblInventory->indexAt(p); // p is a QPoint you get from some where, may be you catch right click
QString codestring = "*" + index->data().toString() + "*";
于 2012-02-19T23:41:18.463 回答