gpt4 book ai didi

c++ - 无法使用 QStandardItemModel 在 Qtreeview 中创建子项

转载 作者:搜寻专家 更新时间:2023-10-31 00:45:33 24 4
gpt4 key购买 nike

在阅读了一些示例之后,我仍然缺少一些东西。我有用于 View 的 Qtreeview 和用于数据接口(interface)的 QStandardItemModel,也使用 QSortFilterProxyModel 子类,但我不知道它是否相关。这是我的逻辑:首先,我以 QWidget 作为父级创建模型:

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

使用 QSortFilterProxyModel 设置 TreeView 。像这样:

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

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

然后我像这样填写第一行:

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

到目前为止,一切正常,我看到了包含数据的行。但是当我喜欢 像这样将 child 添加到行中:

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);

但是我没有看到 child ,为什么?

最佳答案

这不是 QStandardItemModel 的工作方式 - 要添加子项,请在父 QStandardItem 上调用 appendRow(s)/insertRow(s):

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

关于c++ - 无法使用 QStandardItemModel 在 Qtreeview 中创建子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6647383/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com