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()
の問題である可能性があります。これは、私の使用法であろうと、ある種のバグであろうと関係ありません。誰かが光を当てることができますか?
解決済み:
ui->tblInventory->model()->data(ui->tblInventory->model()->index(0,2)).toString()
上記が機能しない理由はよくわかりませんが、機能します。助けてくれてありがとう。
これも機能し、短いです:
QModelIndex index = model->index(row, col, QModelIndex());
ui->tblInventory->model()->data(index).toString();
(model
使用されるトップは、このtblInventory
にバインドされているQAbstractModelです)
QTableViewが使用するモデルによって提供されるdata()
関数を確認してください。説明した効果は、おそらくバグが原因で観察されます。
これを試して:
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() + "*";