0

QTableView には、いくつかの QStandardItem に関連付けられているユーザー データがほとんどありません。

すべての行に 1 つのユーザー データがあること (行選択モードを使用)

ユーザーが同じ行のアイテムを右クリックすると、同じデータが取得されます。

だから私の問題は、すべての行の最初の列にユーザーデータを設定し、クリックイベントを取得するたびに、同じ行のアイテムを見つけ、最初の列を最初に見つけてから、関連するユーザーデータを検索する必要があることです。

行全体にデータを設定することは可能ですか?

4

1 に答える 1

1

データのリストを含むカスタム QAbstractTableModel を用意することを検討してください。現在、あなたと同様の要件を持つプロジェクトがあり、QAbstractTableModel のサブクラス化が機能しています。

QAbstractTableModel で、行ごとにデータのアイテムを返すメソッドを作成しDataClass* getRecord(int row);、QTableView の行クリック イベントで、メソッドを選択した行に関連付けます。

void MyTable::showEditDialog()
{
    MyModel* m = qobject_cast<MyModel*>(model());
    QModelIndexList selected = selectionModel()->selectedIndexes();
    MyDialog dialog(m->getRecord(selected[0].row()), this);
    if (dialog.exec() == QDialog::Accepted)
    {
        m->refresh(selected[0]);
        Q_EMIT contentEdited();
    }
} // end_slot(MyTable::showEditDialog)

QAbstractTableModel とモデル ビュー プログラミングのドキュメントについては、ここここを確認してください。

于 2013-03-30T02:51:49.180 に答える