問題:如何找到子項目,在QTreeView
加載QAbstractItemModel
模型與model->match()
方法?如何在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:根項目成功擴展開始!
如果您使用的是自己的項目模型,你可以簡單地重新實現匹配的方法來滿足您的需求(如文檔說) – 2010-07-20 14:28:33
@Kamil Klimek例如,我買了一輛車,爲什麼我必須安裝第五如果汽車只能用四個車輪運行?另一個問題,如果這種方法真的如文檔說... – mosg 2010-07-21 06:32:47
那麼,因爲沒有什麼關於匹配方法是遞歸的,我覺得它不是,因爲它在QAbstractItemModel中實現,女巫不知道任何關於任何樹或其他)層次結構。這就是爲什麼你必須重新實現匹配方法,如果你想遞歸。 – 2010-07-22 06:38:29