Pregunta: cómo encontrar el elemento secundario, en un QTreeView
modelo cargado QAbstractItemModel
con el método model->match()
?¿Cómo encontrar el Subtema en QAbstractItemModel y la clase QTreeView?
Problema: model->match()
no se encuentran los elementos secundarios, wtf ?!
Aquí está el ejemplo:
alt text http://www.freeimagehosting.net/uploads/179eee87e3.png
Como se puede ver en la foto, estoy tratando de ampliar Layouts
subelemento con este código:
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);
}
}
}
Dónde settings.ini
archivo contiene :
[MainWindow]
ExpandedItems=Using Containers, Connection Editing Mode, Form Editing Mode, Form Editing Mode|Layouts
PD: ¡los ítems raíz se expanden con éxito al inicio!
Si está utilizando su propio modelo de artículo, usted podría simplemente reimplementar método match para satisfacer sus necesidades (como dice docs) –
@Kamil Klimek Por ejemplo, comprar un coche, ¿por qué tengo que instalar el quinto rueda, si el carro solo pudiera correr con cuatro ruedas? La otra pregunta, si este método realmente funciona como docs dicen ... – mosg
Bueno, como no hay nada sobre el método de coincidencia es recursivo, supongo que no, porque está implementado en QAbstractItemModel, que no sabe nada sobre ningún árbol (u otra) jerarquía. Es por eso que TIENES que volver a aplicar el método de coincidencia si quieres que sea recursivo. –