【问题标题】:return items from QList<MyObject> through text string通过文本字符串从 QList<MyObject> 返回项目
【发布时间】:2017-11-09 14:26:15
【问题描述】:

我需要在我的移动应用程序中进行查找。所以我有这个对象:

class Category
{
    public:
    Category();

    QString title;
    QString description;

};

在应用程序启动时,我从 json url 加载一些对象并将它们放入 QList 列表中;

当我在我的 gui 上单击 FIND 时,我已经完成了一种更新模型的方法。

    void CategoryModel::searchByTextInCategoryList(QString testo)
    {
        QList<Category> lista = singleton::instance().categoryCompleteList;
        auto itObj = std::find_if(lista.begin(), lista.end(), [](Category o) { return o.title == "my searched text"; }); 
        //this not for me
    }

如果可能,我需要类似的解决方案:

QList<Category> result = lista.find_all.where(lista.at(index).title == "search text");

存在这种可能性吗?

这种方法对我来说不是很好,因为我需要获取所有包含相同单词的对象。 可以帮助我吗? 我来自 C#,在 C# 中我使用了 Linq,QT 中有类似的 linq 可以通过文本在 Qlist 中搜索?

简而言之...我需要在 QList 中进行查询并从列表中返回多个项目。

谢谢

【问题讨论】:

标签: c++ qt qlist


【解决方案1】:

一个好的旧 foreach 怎么样?

void CategoryModel::searchByTextInCategoryList(QString testo)
{
    QList<Category> lista = singleton::instance().categoryCompleteList;
    QList<Category> results;
    foreach(Category c, lista) { 
        if (c.title.contains("my searched text"))
        //if (c.title. == "my searched text")
            results.append(c);
    }
}

【讨论】:

  • 这是很好的解决方案,但是我需要像从 SQL 中一样进行搜索,您已经进行了类似的搜索:SELECT * FROM test WHERE something LIKE '%my searched text%',如何在 qt "%text%" 中做什么?
  • 我已经编辑了搜索,但是如果您将其用于 UI 上的自动完成功能,则有一个名为 QCompleter 的工具更智能。
  • @Marco:不幸的是,这个QCompleter 看起来是为与QtWidgets 一起使用而设计的。
  • 用户界面? QML 和 UI 一样多,不是吗?
  • 好吧,我不喜欢 QML,我还是更喜欢用代码设计 UI。 (但我是老式的)
猜你喜欢
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-02
  • 2018-01-18
  • 2013-12-21
  • 1970-01-01
相关资源
最近更新 更多