mos*_*osg 13 qt qt4 qabstractitemmodel
问题:如何在带有方法的QTreeView加载QAbstractItemModel模型中查找子项model->match()?
问题: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);
}
}
}
Run Code Online (Sandbox Code Playgroud)
当settings.ini文件包含:
[MainWindow]
ExpandedItems=Using Containers, Connection Editing Mode, Form Editing Mode, Form Editing Mode|Layouts
Run Code Online (Sandbox Code Playgroud)
PS:root项目在开始时成功扩展!
mos*_*osg 22
这是解决方案:
QModelIndexList Items = model->match(
model->index(0, 0),
Qt::DisplayRole,
QVariant::fromValue(item),
2, // look *
Qt::MatchRecursive); // look *
Run Code Online (Sandbox Code Playgroud)
* 没有那个参数,match()函数只搜索1个级别| 归档时间: |
|
| 查看次数: |
17706 次 |
| 最近记录: |