2

我的树视图显示正确,但是当我单击树中的项目时,我无法获取父名称。

我的 QML 代码可以在下面找到。

TreeView {
    id:treeviewID
    anchors.fill: parent
    model: theModel
    style: styleTreeView
    selection: ItemSelectionModel{
        id:sel
        model: theModel
    }
    headerVisible : true
    selectionMode: SelectionMode.SingleSelection

    onDoubleClicked:{

        console.log("parent Name of the Item selected : ",?????)       

    }

    TableViewColumn {
        role: "name_role"
        title: valueSelected
    }
}
4

1 回答 1

0

我解决了这个问题,这是我的解决方案:

TreeView {
    id:treeviewID
    anchors.fill: parent
    model: theModel
    style: styleTreeView
    selection: ItemSelectionModel{
        id:sel
        model: myModel
    }
    headerVisible : true
    selectionMode: SelectionMode.SingleSelection

    itemDelegate: Rectangle {
            id:r
            height: 20
            color:"transparent"       

            MouseArea{

                anchors.fill: parent
                onClicked:{
                   var indexSelected = styleData.index ;
                   var indexParent   = indexSelected.parent;
console.log("parent name is ",myModel.getParentName(indexParent));

                 }

    TableViewColumn {
        role: "name_role"
        title: valueSelected
    }
}

我的模型是:

TreeViewModel::TreeViewModel(QObject *parent) : QStandardItemModel(parent)
{ }
/**
 * @brief TreeViewModel::getParentName
 * @param itemIndex
 * @return string: name of parent item
 */
QString TreeViewModel::getParentName(const QModelIndex &itemIndex){
    QVariant value1 = itemIndex.data(Qt::DisplayRole);
    if(value1.isValid())
        return  value1.toString();
    else
        return QString();
}
于 2015-11-09T09:14:51.680 回答