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



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

但是,如果我在构造函数之后调用它,例如作为对某些按钮按下的反应,它根本不做任何事情。

(还检查了this->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进行子类化,因为这通常不是必需的。

相关内容

  • 没有找到相关文章

最新更新