[Solved] Invidual itemDelegate for each column of table\listview
-
@p3c0 Sorry for confuse you, but just focus on this
ModelAbstract* model = static_cast<ModelAbstract*>(index.internalPointer()); qDebug() << model->getData("ItemType");
What i meant here is, the index of styleData.value given in tableviewColumn is wrong. Since the output value is same one item.
And here is the definition of getData(QString dataname)virtual QVariant getData(QString dataname) const; QVariant Project::getData(QString dataname) const { if(dataname == "ItemDisplayName") { QVariantMap returnData; returnData["ItemDisplayName"] = m_name; returnData["ItemType"] = m_type; return returnData; } else if(dataname == "ItemType") return "Project"; else return QVariant(); }
I also have a Q_INVOKABLE getData(QString dataname) inside QAbstractItemModel class,
@illunara According to your earlier code:
QVariantMap TreeViewDataModel::get(QModelIndex index) { ModelAbstract* model = static_cast<ModelAbstract*>(index.internalPointer()); qDebug() << model->getData("ItemType"); return QVariantMap();
You are fetching data for "ItemType". And now the definition of
getData
:virtual QVariant getData(QString dataname) const; QVariant Project::getData(QString dataname) const { if(dataname == "ItemDisplayName") { QVariantMap returnData; returnData["ItemDisplayName"] = m_name; returnData["ItemType"] = m_type; return returnData; } else if(dataname == "ItemType") return "Project"; else return QVariant(); }
Isn't it obvious that you will get "Project" always for "ItemType" ?
-
@illunara According to your earlier code:
QVariantMap TreeViewDataModel::get(QModelIndex index) { ModelAbstract* model = static_cast<ModelAbstract*>(index.internalPointer()); qDebug() << model->getData("ItemType"); return QVariantMap();
You are fetching data for "ItemType". And now the definition of
getData
:virtual QVariant getData(QString dataname) const; QVariant Project::getData(QString dataname) const { if(dataname == "ItemDisplayName") { QVariantMap returnData; returnData["ItemDisplayName"] = m_name; returnData["ItemType"] = m_type; return returnData; } else if(dataname == "ItemType") return "Project"; else return QVariant(); }
Isn't it obvious that you will get "Project" always for "ItemType" ?
-
@p3c0 You are right, my horrible mistake. I think i drunk, should get home now :(
I marked this topic as solved, should i some delete needless post too?@illunara That's fine. No need to delete. It might confuse.
21/23