c++ - 在编辑模式下的QTreeView委托中,永久文本

  显示原文与译文双语对照的内容

在默认委托中使用 QTreeView 来显示可以编辑模型数据。 当我在要更改的字段上双击或者按F2时,获取文本编辑框,但是当编辑器出现时将删除现有文本。 我希望现有文本保留但已经选中。 来自Qt文档的"可以编辑树模型"示例具有这种行为,但是我无法确定它是如何完成的。 示例不使用自定义委托,而且没有与我可以找到的委托行为相关的调用。 这是否可以在没有自定义委托的情况下完成?

编辑:这是我的重实现 QAbstractItemModel::data()的代码:


QVariant projectModel::data(const QModelIndex &index, int role) const
{
 if (!index.isValid())
 return QVariant();

 node* item = static_cast<node*>(index.internalPointer());

 if (role == Qt::DisplayRole)
 return QVariant(item->data(index.column()).c_str());

 else if (role == Qt::ForegroundRole)
 return item->text_color(index.column());

 else if (role == Qt::BackgroundRole)
 return item->background_color(index.column());

 else if (role == Qt::CheckStateRole)
 return item->check_state(index.column());

 else if (role == Qt::DecorationRole)
 return item->icon(index.column());

 else if (role == Qt::TextAlignmentRole)
 return item->text_alignment(index.column());

 else
 return QVariant();
}

时间: 作者:

模型应该返回一个数据,你希望通过 Qt::EditRole 在ediitor中看到。 如果数据无效 (QVariant::isValid() == false) 则会通过 Qt::DisplayRole 请求数据。

作者:
...