QStandardItemModel获取孩子的模型

时间:2018-04-13 09:42:29

标签: c++ qt qstandarditemmodel

我是Qt编程的初学者,我遇到了一个小问题。 事实上,我有一个很大的QStandardItemModel我需要找到一些带有关键字的特定项目。这个想法是让用户给出两个输入,一个用于国家,另一个用于城市。一旦找到该国家,就必须在匹配的国家/地区搜索该城市。但是底层代码,它继续搜索整个树模型。

为了获得匹配国家/地区,我这样做:

foundCountriesList = TreeModel->findItems(countryKeyword, 
    Qt::MatchStartsWith | Qt::MatchFixedString | Qt::MatchRecursive, 0); 

然后我需要在匹配的国家/地区内找到city关键字:

if (!foundCountriesList.isEmpty())
{
    foreach(QStandardItem* item, foundCountriesList)
    {
        foundCitiesList = item->child(0,0)->Model()->findItems(cityKeyword, 
            Qt::MatchStartsWith | Qt::MatchFixedString | 
            Qt::MatchRecursive, 0);
    }
}

但是,它一直在整个city中搜索TreeModel,因为每当我TreeModel->Item(0,0)->child(0,0)->Model()时,我总会得到TreeModel

有人可以给我一些提示吗? 提前谢谢!

2 个答案:

答案 0 :(得分:2)

我会用以下方式解决它:

@Override
protected Class<?>[] getServletConfigClasses() {
    return new Class[] { Configurer.class };
}

@Override
protected String[] getServletMappings() {
    return new String[] { "/" };
}

@Override
protected Class<?>[] getRootConfigClasses() {
    return null;
}

即。搜索城市名称,如果找到城市,请检查他们所属的国家/地区。

答案 1 :(得分:0)

由于您已遍历所需国家/地区的所有项目,因此您可以自行过滤掉该城市,方法是检查项目&#39;值。

您也可以尝试使用QSortFilterProxyModel。让一个按国家过滤(它的来源将是您的主要模型),另一个按城市过滤(它的来源将是各国的代理模型)。