Qt:按属性在列表中查找对象

Rui*_*ião 5 c# c++ qt properties list

我是 Qt 的初学者,我更习惯用 C# 编程。所以我的问题是如何在 Qt 中实现下面的 C# 代码:

public class MyObject 
{    
    private string myproperty;

    public string Myproperty 
    {
                get { return myproperty; }
                set { myproperty = value; }
    }    
}

private void button1_Click(object sender, EventArgs e) 
{
    List<MyObject> myobjectlist = new List<MyObject>();

    MyObject selectedobject = myobjectlist.Find(p => p.Myproperty == "Some name");               
}
Run Code Online (Sandbox Code Playgroud)

是否可以在 Qt 中像上面的代码一样从列表中检索对象?

Rei*_*ica 6

这与 Qt 本身关系不大。如果您可以使用 C++11,请使用 lambda,就像在 C# 中一样:

auto itObj = std::find_if(
  myobjectlist.begin(), myobjectlist.end(),
  [](MyObject o) { return o.myproperty() == "Some name"; }
);
if (itObj != myobjectlist.end())
{
  // object was found, use *itObj (or itObj->) to access it/its members
}
else
{
  // object was not found
}
Run Code Online (Sandbox Code Playgroud)

如果没有 C++11,您必须手动创建一个类operator()以用作谓词,或者for手动编写一个循环。