Вопрос: как найти sub объект в a QTreeView
загруженный QAbstractItemModel
модель с model->match()
метод?
Проблема: model->match()
не может найти sub объекты, wtf?!
Вот пример:
Как Вы видите из изображения, я пытаюсь расшириться Layouts
объект sub с этим кодом:
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);
}
}
}
Где settings.ini
файл содержит:
[MainWindow]
ExpandedItems=Using Containers, Connection Editing Mode, Form Editing Mode, Form Editing Mode|Layouts
PS: корневые объекты успешно подробно останавливаются, запускаются!
Вот решение:
QModelIndexList Items = model->match(
model->index(0, 0),
Qt::DisplayRole,
QVariant::fromValue(item),
2, // look *
Qt::MatchRecursive); // look *
*
Без этого аргумента функция match () ищет только 1 уровень