获取itemDelegate中的当前索引模型

时间:2017-03-17 07:55:24

标签: c++ qt qml

我正在使用this code并尝试获取行数或所选项目是否包含子项。但我得到了一个奇怪的行为。

我在qml中添加了下一个代码:

    itemDelegate: Item {
        CheckBox {
            id: checkbox
            text: styleData.value.text
            checked:false
            visible: styleData.value === undefined ? false : true

            onClicked: {
                theModel.print(styleData.row, styleData.column,
                               theModel.index)
                theModel.print(styleData.row, styleData.column,
                               theModel.index(styleData.row,
                                              styleData.column,
                                              theModel.currentIndex))
            }
        }
    }

我的模型(treemodel.cpp)有以下方法:

bool TreeModel::print(int row, int column, const QModelIndex &modelIndex)
{
    createIndex(row, column, 1);

    qDebug() << Q_FUNC_INFO
             << " row: " << row
             << " column: " << column
             << " rowCount (a): " << this->rowCount(index(row, column, modelIndex))
             << " rowCount (b): " << this->rowCount(modelIndex)
             << " hasChildren (a): " << this->hasChildren(index(row, column, modelIndex))
             << " hasChildren (b): " << this->hasChildren(modelIndex);

    return true;
}

当我点击复选框时,有时候行数是正确的,但大多数时候都是错误的。即当我点击没有孩子的行时,rowCount没有返回0,当我们只有4个孩子时,rowCount没有返回0。

print运行正常。当我们使用箭头展开树时,它总是返回正确的值,所以我想问题是我如何将索引传递给<div class="carousel slide" data-ride="carousel"> <div class="carousel-inner" role="listbox"> <div class="item active" style="background-image:url(http://dentistry.utah.edu/images/slider-banner/roy-hume.jpg); "> </div> <div class="item" style="background-image: url(http://dentistry.utah.edu/images/slider-banner/school-dentistry-students.jpg);"> </div> </div> <!-- CAROUSEL-INNER --> </div> 方法。

1 个答案:

答案 0 :(得分:1)

根据documentation,您可以使用itemDelegate检索styleData.index中的当前索引。

这应该按预期工作:

itemDelegate: Item {
    CheckBox {
        id: checkbox
        text: styleData.value.text
        checked:false
        visible: styleData.value === undefined ? false : true

        onClicked: {
            theModel.print(styleData.row, styleData.column,
                           styleData.index)
        }
    }
}