2016-04-23 20 views
1

TreeViewQt Quickで、サブクラスがQStandardItemModelである。 this.appendRow()は、モデルのコンストラクターで完全に正常に機能します。QStandardItemModelコンストラクタの呼び出し後にappendRowが機能しない

しかし、私はコンストラクタの後に、たとえばボタンプレスの反応としてそれを呼び出すと、何もしません。

(ちょうど表示されないかもしれないが、rowCountが増加しないかどうかを確認するには、this->rowCount()もチェックしてください)。

私は下に示すように、QStandardItemをルートに追加するaddRootEntry関数を使用しています。

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

あなた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_NameQt::DisplayRoleに設定されていることを確認します。

TreeViewmodelプロパティが設定されていることを確認してください。

通常は必要ないので、QStandardItemModelのサブクラス化は考慮しないでください。

+0

いいえ、残念ながらそれは動作しません。アイテムは今追加されますが、ツリービューは更新されません。 –

関連する問題