所有方法都是默认的,就像在官方教程中一样,并且有myModel :: data()的代码:
QVariant MyModel::data(const QModelIndex &index, int role /*=
Qt::DisplayRole*/) const
{
if (!index.isValid()) {
return QVariant();
}
NodeInfo* nodeInfo = static_cast<NodeInfo*>(index.internalPointer());
switch (index.column())
{
case 0:
{
auto name = QString::fromStdString(nodeInfo->getName());
return QVariant(name);
break;
}
case 1:
if (role == Qt::DisplayRole || role == Qt::EditRole)
{
QString data = QString::fromStdString(nodeInfo->getValue());
return QVariant(data);
}
break;
default:
break;
}
return QVariant();
}
答案 0 :(得分:0)
编辑:根据评论更新。
data()方法为每个角色返回一个非空的QVariant,包括 Qt :: CheckStateRole 。这被QTreeView误解为检查状态。
修复是为了确保仅为DisplayRole返回正确的值:
case 0:
{
if (role == Qt::DisplayRole) {
auto name = QString::fromStdString(nodeInfo->getName());
return QVariant(name);
} else {
return QVariant();
}
break;
}
老答案:
最有可能的是,flags()方法返回Qt :: ItemIsUserCheckable标志。
重新实现模型中的flags方法,以便项目不可检查(~Qt :: ItemIsUserCheckable)。有关详细信息,请查看文档here。