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

时间:2016-04-23 14:14:26

标签: c++ qt user-interface qt5

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
}

1 个答案:

答案 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进行子类化,因为它通常不是必需的。