【发布时间】:2019-06-30 21:24:56
【问题描述】:
我有一个QStandardItemModel,只有一列(代表一个列表)。列表中的每个项目都有一个唯一的整数 ID,该 ID 存储为 QStandardItem 的数据(通过 QStandardItem::setData 我猜默认是 Qt::UserRole+1)。
给定其中一个 ID,我想从模型中查找并删除相应的行。现在我正在这样做:
void NetworkManager::removeSessionFromModel (QStandardItemModel *model, int sessionId) {
foreach (const QStandardItem *item, model->findItems("*", Qt::MatchWildcard)) {
if (item->data() == sessionId) {
model->removeRow(item->index().row());
break;
}
}
}
它运行良好,但该函数的每一行都让我畏缩。有没有更清洁的方法来做到这一点?
【问题讨论】:
-
QStandardItemModel::setData 默认使用
Qt::EditRole。 -
@SilvanoCerza 我将它设置在项目上,QStandardItem::setData,而不是 QStandardItemModel。
标签: c++ qt5 qstandarditemmodel qstandarditem