Попробуйте использовать QStringList::join(...)
(http://doc.qt.io/qt-5/qstringlist.html#join).
Поскольку вы хотите объединить только до первых 5 элементов, чтобы избежать копирования списка, используйте итераторы, т. Е .:
QString foo(const QStringList& myList)
{
auto iterBegin = myList.begin();
auto iterEnd = iterBegin + std::min(myList.size(), 5);
return QStringList{iterBegin, iterEnd}.join(", ");
}
... но это не сработает, так как QStringList
не имеет такого конструктора. Вам придется скопировать QStrings
в новый QStringList
. В идеале, копии должны быть мелкими - буфер распределяется между двумя QStrings
в двух разных QStringLists
, но я не уверен, что Qt делает это так (возможно, и предоставит отдельный буфер, только если вы попытаетесь изменить базовую строку).
В любом случае, как только вы получите QStringList
в качестве подсписка, просто вызовите:
subList.join(", ");