在 Qt 中,QList
是一个模板类,用于存储同一类型的元素。如果你想要根据特定的数据值来查找该数据在 QList
中的下标(索引),你可以使用一个简单的循环来遍历列表并比较每个元素。以下是一个示例函数,它接受一个 QList<T>
和一个要查找的值,然后返回该值在列表中的下标。如果值不存在于列表中,则返回 -1
。
template <typename T> | |
int indexOfValue(const QList<T>& list, const T& value) { | |
for (int i = 0; i < list.size(); ++i) { | |
if (list.at(i) == value) { | |
return i; // 找到值,返回其下标 | |
} | |
} | |
return -1; // 没有找到值,返回-1 | |
} |
你可以这样使用这个函数:
QList<int> myList; | |
myList << 1 << 2 << 3 << 4 << 5; | |
int index = indexOfValue(myList, 3); // 应该返回 2,因为 3 是列表中的第三个元素(下标从 0 开始) |
请注意,这个方法假设 T
类型支持 operator==
用于比较。如果 T
是一个复杂的类型,并且没有定义 operator==
,你需要提供一个自定义的比较函数或者重载 operator==
。
另外,Qt 的 QList
类本身也提供了一个 indexOf
方法,你可以直接使用它来获取元素的下标,而无需自己编写循环:
QList<int> myList; | |
myList << 1 << 2 << 3 << 4 << 5; | |
int index = myList.indexOf(3); // 同样应该返回 2 |