서브 클래스 된 DomModel : QAbstractItemModel을 설정 한 QTreeView가 있습니다. 각 항목은 주로 QDomNode를 다루는 DomItem입니다. QDomDocument를이 모델로 설정했습니다. Qt 예제 중 하나에서이 시스템을 파생시킨 것 같습니다.Qt QTreeView 편집 가능한 DOM 모델
노드 이름은 0, 속성은 1, 값은 2입니다.
어쨌든이 XML DOM 트리를 편집 가능하게 만들고 싶습니다. Qt :: ItemIsEditable 및 일부 다른 것들을 모델 클래스에서 수정 했으므로 두 번 클릭하여 QTreeView를 통해 모델을 편집 할 수 있습니다.
2 열의 경우 QDomItem에 setNodeValue 함수가 있기 때문에 쉽습니다. 그러나 item-> node(). NodeName() 및 item-> node() 속성에 대한 "설정") 그러면 0과 1 열을 수정할 수 있습니다.
이제 열 2를 수정하면 열 0과 1이 Enter 키를 누르면 이전 값으로 되돌아갑니다. QDomElement
을 반환 분명히 item->node().toElement()
bool DomModel::setData(const QModelIndex &index, const QVariant &value,
int role)
{
if (role != Qt::EditRole) return false;
DomItem *item = static_cast<DomItem*>(index.internalPointer());
switch (index.column()){
case 0:
// ???
break;
case 1:
// ???
break;
case 2:
item->node().setNodeValue(value.toString()); // This works - QTreeView is updated
break;
}
...
}