我在Qt Quick
中有一个TreeView
,还有一个类子类QStandardItemModel
。 this.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
进行子类化,因为这通常不是必需的。