在 QString 中, contains() 方法的工作方式如下:
QString s = "long word";
s.contains("long"); // -> True
Run Code Online (Sandbox Code Playgroud)
我认为 QStringList 的工作方式类似,但它没有:
QStringList s;
s << "long word";
s << "longer word";
s.contains("long"); // -> False
Run Code Online (Sandbox Code Playgroud)
QStringList 包含对完全匹配的搜索,这不像我想要的那样工作。有没有一种简单的方法可以在 QStringList 中查找字符串的一部分?我当然可以遍历 QStringList 并在那里使用 contains() ,但是有更好的方法吗?
我正在寻找 Qt 智能指针的最佳实践。假设我有这样的事情。
void aFunction() {
QSharedPointer<QVector<QSharedPointer<Object> > > pointer = QSharedPointer<QVector<QSharedPointer<Object> > >(new QVector<QSharedPointer<Object> >);
doSomethingWithPointer(pointer);
changeOwnership(pointer);
}
Run Code Online (Sandbox Code Playgroud)
然后在 doSomethingWithPointer 函数中
void doSomethingWithPointer(QSharedPointer<QVector<QSharedPointer<Object> > > pointer) {
pointer->append(QSharedPointer<Object>(new Object);
}
Run Code Online (Sandbox Code Playgroud)
现在我在 doSomethingWithPointer 之后,将指针传递给 changeOwnership,它应该拥有它的所有权。我想知道的是 doSomethingWithPointer。在这样的函数中传递共享指针可以吗?或者我应该使用 QWeakPointer 因为 doSomethingWithPointer 实际上并不拥有指针的所有权?我什么时候应该使用 QWeakPointer?