在 QTableView 中,我几乎没有与某些 QStandardItem 相关联的用户数据,
每一行都有一个用户数据(我使用行选择模式)
现在,当用户右键单击同一行上的任何项目时,他们会得到相同的数据。
所以我的问题是,我将用户数据设置在每一行的第一列,每次我得到一个点击事件,我都需要找到同一行的项目,并且首先找到第一列,然后查找关联的用户数据。
这看起来相当愚蠢,是否可以为整行设置数据?
在 QTableView 中,我几乎没有与某些 QStandardItem 相关联的用户数据,
每一行都有一个用户数据(我使用行选择模式)
现在,当用户右键单击同一行上的任何项目时,他们会得到相同的数据。
所以我的问题是,我将用户数据设置在每一行的第一列,每次我得到一个点击事件,我都需要找到同一行的项目,并且首先找到第一列,然后查找关联的用户数据。
这看起来相当愚蠢,是否可以为整行设置数据?
您可以考虑使用带有数据列表的自定义 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)