0

Qt::UserRoleアイテムに挿入しようとするQTreeViewと常に false が返される理由がわかりませんが、入力すると返されないQt::EditRole のは次のコードです。

void TreeVieweX::insertRow(QString& slink)
{
    QModelIndex index = this->selectionModel()->currentIndex();
    QAbstractItemModel *model = this->model();
    int iRowCount = this->model()->rowCount();
    if (!model->insertRow(iRowCount, index.parent()))
        return;

    QModelIndex child = model->index(iRowCount,0, index.parent());
    bool bEditRole =  model->setData(child, QVariant(slink), Qt::EditRole); // working great can fetch the data later 

    QHash<QString, QVariant> indexSelectedMap;
    indexSelectedMap.insert("site_name",QVariant(slink));

    QMap<int, QVariant> roles;
    roles.insert(Qt::UserRole,indexSelectedMap);
    bool bUserRole =  model->setItemData( index.parent(),roles); //returns false , cant fetch data later
}
4

1 に答える 1

1

QAbstractItemModel::setItemData は、ロール マップ内の各アイテムに対して setData を呼び出す便利な関数です。

bool QAbstractItemModel::setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles)
{
    bool b = true;
    for (QMap<int, QVariant>::ConstIterator it = roles.begin(); it != roles.end(); ++it)
        b = b && setData(index, it.value(), it.key());
    return b;
}

モデルが setItemData を再実装していないと仮定すると、具体的なモデルにある setData の実装に問題がある可能性があります。

于 2013-01-16T08:11:18.030 に答える