19

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

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

これにより、myの列0行2のセルにテキストが表示されますQTableView。問題は、それがやっていることではないということです。に渡す引数に関係なく、セル0,0にテキストが表示されますQPoint()indexAt()なぜこれが...助けになるのか分かりません。ありがとう!

[編集]
私もこれを試しました:

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();

atセル2、2を取得し、QModelIndexその行と列を出力する必要があります。もちろん、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使用されるtopは、これにバインドされている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 に答える