Вопрос: как найти подпункт, в QTreeView
загружен QAbstractItemModel
модель с model->match()
метод?Как найти Subitem в классе QAbstractItemModel и QTreeView?
Задача: model->match()
не может найти подпункты, wtf ?!
Вот пример:
alt text http://www.freeimagehosting.net/uploads/179eee87e3.png
Как вы можете видеть на картинке, я пытаюсь расширить Layouts
подпункт с этим кодом:
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: корневые элементы успешно расширяются при запуске!
Если вы используете свою собственную модель элемента, можно просто переопределить метод соответствия в соответствии с вашими потребностями (как говорит Docs) –
@Kamil Klimek Например, я покупаю машину, то почему я должен установить пятый колесо, если автомобиль может работать только с четырьмя колесами? Другой вопрос, если этот метод действительно работает, как говорят docs ... – mosg
Ну, так как нет ничего о методе совпадения, это рекурсивный, я думаю, что это не так, потому что он реализован в QAbstractItemModel, ведьма ничего не знает о каком-либо дереве (или другой) иерархии. Вот почему вам нужно переопределить метод соответствия, если вы хотите сделать его рекурсивным. –