HowTo trouver Point dans QAbstractItemModel et QTreeView classe?
Question: comment trouver les sous-élément, dans un QTreeView
chargé QAbstractItemModel
modèle avec model->match()
méthode?
Problème: model->match()
ne pouvez pas trouver les sous-éléments, wtf?!
Voici l'exemple:
le texte d'alt http://www.freeimagehosting.net/uploads/179eee87e3.png
Comme vous pouvez le voir sur la photo, je suis en train de développer Layouts
sous avec ce code:
void Dialog::restoreState(void)
{
//get list
QSettings settings("settings.ini", QSettings::IniFormat);
settings.beginGroup("MainWindow");
QStringList List = settings.value("ExpandedItems").toStringList();
settings.endGroup();
foreach (QString item, List)
{
if (item.contains('|'))
item = item.split('|').last();
//search `item` text in model
QModelIndexList Items = model->match(model->index(0, 0), Qt::DisplayRole, QVariant::fromValue(item));
if (!Items.isEmpty())
{
//Information: with this code, expands ONLY first level in QTreeView
view->setExpanded(Items.first(), true);
}
}
}
Où settings.ini
fichier contient:
[MainWindow]
ExpandedItems=Using Containers, Connection Editing Mode, Form Editing Mode, Form Editing Mode|Layouts
PS: éléments racine se développe avec succès sur démarrer!
Si vous utilisez votre propre élément de modèle, vous pouvez simplement réimplémenter méthode match pour s'adapter à vos besoins (comme docs dit)
Klimek Par exemple, j'achète une voiture, pourquoi dois-je installer la cinquième roue, si la voiture peut fonctionner uniquement avec quatre roues? L'autre question, si cette méthode fonctionne vraiment que les docs disent...
Eh bien, comme il n'y a rien sur le match méthode est récursive, je gues il n'est pas, parce qu'il est mis en œuvre dans QAbstractItemModel, la sorcière ne sait rien à propos de n'importe quel arbre (ou d'autres) de la hiérarchie. C'est pourquoi vous devez ré-écrire de match méthode si vous voulez vous rendre récursif.
Oh, et, selon vous, "voiture"... eh Bien, c'est mieux d'avoir de la cinquième (de rechange) de la roue, dans le cas où si votre autre roue obtenir de l'appartement..
C'est dans le mauvais sens...
Klimek Par exemple, j'achète une voiture, pourquoi dois-je installer la cinquième roue, si la voiture peut fonctionner uniquement avec quatre roues? L'autre question, si cette méthode fonctionne vraiment que les docs disent...
Eh bien, comme il n'y a rien sur le match méthode est récursive, je gues il n'est pas, parce qu'il est mis en œuvre dans QAbstractItemModel, la sorcière ne sait rien à propos de n'importe quel arbre (ou d'autres) de la hiérarchie. C'est pourquoi vous devez ré-écrire de match méthode si vous voulez vous rendre récursif.
Oh, et, selon vous, "voiture"... eh Bien, c'est mieux d'avoir de la cinquième (de rechange) de la roue, dans le cas où si votre autre roue obtenir de l'appartement..
C'est dans le mauvais sens...
OriginalL'auteur mosg | 2010-07-20
Vous devez vous connecter pour publier un commentaire.
Voici la solution:
*
Sans que l'argument de la fonction match() recherche 1 seul niveauOriginalL'auteur mosg
Mon exemple de travail sur QTreeView.
OriginalL'auteur Alatey