开发者

Can’t make child in Qtreeview using QStandardItemModel

开发者 https://www.devze.com 2023-03-19 12:48 出处:网络
After reading some examples I am still missing here something. I have Qtreeview for view and QStandardItemModel for the data interface, also using QSortFilterProxyModel subclass but I don\'t kn开发者

After reading some examples I am still missing here something. I have Qtreeview for view and QStandardItemModel for the data interface, also using QSortFilterProxyModel subclass but I don't kn开发者_开发问答ow if its relevant. This is my logic: First I create the model with the QWidget as the parent:

QStandardItemModel m_model = new QStandardItemModel(0,4,parent);
then setSourceModel(m_model)  for the widget

Set the treeview with QSortFilterProxyModel. something like this:

GroupProxyModel = new GroupSortFilterProxyModel;
GroupProxyModel->setDynamicSortFilter(true);
setSourceModel(createSubjectModel(parent));

ui.treeView_mainwindow->setModel(GroupProxyModel);
ui.treeView_mainwindow->setSortingEnabled(true);

Then later I fill the first row like this:

QList<QStandardItem *> items;
items.insert(0,new QStandardItem("Test 0"));
items.at(0)->setEditable(false);
m_model->insertRow(0,items);

Until now every thing working fine and I see the row with the data. But when I like to add child to the row like this:

QModelIndex parentQModelIndex = m_model->item(0,0)->index();
m_model->insertRows(0,1,parentQModelIndex);
m_model->insertColumns(0,1,parentQModelIndex);
QModelIndex indexB = m_model->index(0, 0, parentQModelIndex);
m_model->setData(indexB,"Child test",Qt::DisplayRole);

But I don't see the child, why?


That's not how QStandardItemModel works - to add a child, call appendRow(s)/insertRow(s) on the parent QStandardItem:

QStandardItem* child = new QStandardItem( tr("Child test") );
...
QStandardItem* parentItem = m_model->item( 0, 0 );
parentItem->appendRow( child );
0

精彩评论

暂无评论...
验证码 换一张
取 消