Qt/C++:在QTableView中的某个单元格中获取数据

Jos*_*eph 16 c++ qt qtableview

我正试图将文本放在某个单元格中QTableView.例如:

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

这应该在我的第0列第2行的单元格中获取文本QTableView.问题是,这不是它在做什么!不管争论我通入QPoint()indexAt(),我会在小区0,0中的文本.我不知道为什么这是......任何帮助?谢谢!

[编辑]
我也试过这个:

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

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

qDebug()<< ui->tblInventory->indexAt(QPoint(2,2)).row() << " and " <<  ui->tblInventory->indexAt(QPoint(2,2)).column();
Run Code Online (Sandbox Code Playgroud)

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

Jos*_*eph 26

已解决:

ui->tblInventory->model()->data(ui->tblInventory->model()->index(0,2)).toString()
Run Code Online (Sandbox Code Playgroud)

不太清楚为什么以上不起作用,但确实如此.谢谢您的帮助.

  • indexAt()返回视图中某个*像素位置*的索引.(0,2)距离顶部边界仅两个像素,因此对应于索引(0,0).顺便说一下,ui-> tblInventory-> model() - > index(0,2).data().toString()也可以. (2认同)

Mah*_*kic 9

这个也工作,它更短:

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

ui->tblInventory->model()->data(index).toString();
Run Code Online (Sandbox Code Playgroud)

(model使用top是绑定到此的QAbstractModel tblInventory)