Domanda: come trovare l'elemento secondario, in un modello QAbstractItemModel
caricato QAbstractItemModel
con il metodo model->match()
?Come trovare i sottitem in QAbstractItemModel e la classe QTreeView?
Problema: model->match()
non è in grado di trovare elementi secondari, wtf ?!
Ecco l'esempio:
alt text http://www.freeimagehosting.net/uploads/179eee87e3.png
Come si può vedere dalla foto, che sto cercando di ampliare Layouts
voce secondaria con questo codice:
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);
}
}
}
Dove settings.ini
di file contiene :
[MainWindow]
ExpandedItems=Using Containers, Connection Editing Mode, Form Editing Mode, Form Editing Mode|Layouts
PS: gli oggetti radice si espandono correttamente all'avvio!
Se si utilizza il proprio modello di oggetto, si può semplicemente reimplementare metodo match per soddisfare le vostre esigenze (come docs dice) –
@Kamil Klimek Per esempio, ho comprare una macchina, perché devo installare il quinto ruota, se la macchina potesse girare solo con quattro ruote? L'altra domanda, se questo metodo funziona davvero come dicono i documenti ... – mosg
Beh, dato che non c'è nulla nel metodo di corrispondenza è ricorsivo, non è così, perché è implementato in QAbstractItemModel, la strega non sa nulla di nessun albero (o altro) gerarchia. Questo è il motivo per cui devi reimplementare il metodo match se vuoi renderlo ricorsivo. –