web-dev-qa-db-ja.com

Qt / C ++:QTableViewの特定のセルでデータを取得する

QTableViewの特定のセルでテキストを取得しようとしています。例えば:

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

これにより、私のQTableViewの列0行2のセルにテキストが表示されます。問題は、それがやっていることではないということです!。 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();
_

セル2、2でQModelIndexを取得し、その行と列を出力する必要があります。もちろん、2と2である必要があります。ただし、0と0を取得します。したがって、これはQTableView::indexAt()の問題である可能性があります。これは、私の使用法であろうと、ある種のバグであろうと関係ありません。誰かが光を当てることができますか?

17
Joseph

解決済み:

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

上記が機能しない理由はよくわかりませんが、機能します。助けてくれてありがとう。

26
Joseph

これも機能し、短いです:

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

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

model使用されるトップは、このtblInventoryにバインドされているQAbstractModelです)

9
Mahir Zukic

QTableViewが使用するモデルによって提供されるdata()関数を確認してください。説明した効果は、おそらくバグが原因で観察されます。

0
dpq

これを試して:

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() + "*";
0
SIFE