TreeView
中有一个Qt Quick
,另一个是QStandardItemModel
的子类。 this.appendRow()
在模型的构造函数中完美运行。
但是,如果我在构造函数之后调用它,例如作为对某些按钮按下的反应,它什么都不做。
(还检查了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
}
答案 0 :(得分:0)
在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
。
确保在model
上设置TreeView
属性。
考虑不要对QStandardItemModel
进行子类化,因为它通常不是必需的。