gpt4 book ai didi

c++ - QStandardItemModel appendRow 在调用构造函数后不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 13:17:13 25 4
gpt4 key购买 nike

我在 Qt Quick 中有一个 TreeView 和一个子类 QStandardItemModelthis.appendRow() 在模型的构造函数中工作得很好。

但是,如果我在构造函数之后调用它,例如作为对某些按钮按下的 react ,它什么都不做。

(还检查了 this->rowCount() 看它是否可能只是没有显示,但 rowCount 没有增加)。

我正在使用您可以在下面看到的 addRootEntry 函数将 QStandardItem 添加到根。

void ProjectTreeModel::addRootEntry( const QString& name, const QString&  type, const QString& icon)
{
QStandardItem rootEntry = new QStandardItem( name );

rootEntry->setData( icon, ProjectTreeModel_Role_Icon );
rootEntry->setData( type, ProjectTreeModel_Role_Type );
rootEntry->setData( name, ProjectTreeModel_Role_Name );

this->appendRow(rootEntry);
qDebug() << rootEntry; //Is not null
qDebug() << this->rowCount(); //Stays the same
}

最佳答案

在您的 addRootEntry 函数中试试这个:

QStandardItem *rootEntry = new QStandardItem(name);

rootEntry->setData( icon, ProjectTreeModel_Role_Icon );
rootEntry->setData( type, ProjectTreeModel_Role_Type );
rootEntry->setData( name, ProjectTreeModel_Role_Name );

QStandardItem *parentItem = invisibleRootItem();
parentItem->appendRow(rootEntry);

确保ProjectTreeModel_Role_Name 设置为 Qt::DisplayRole

确保在 TreeView 上设置了 model 属性。

考虑不对 QStandardItemModel 进行子类化,因为这通常不是必需的。

关于c++ - QStandardItemModel appendRow 在调用构造函数后不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36811909/

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