2015-12-02 86 views
0

我有以下的QString:的QList <QString>到QString.arg()

QString funcProxy = "executeProxy(\"%1\", \"%2\", \"%3\")"; 

的数据,对每一个在:

QList<QString> listProxy; 

我怎么会去在listProxy添加数据使用arg()方法的funcProxy?

funcProxy.arg(??); 

感谢

回答

0

关于来自@owacoder的答案,您实际上并不需要替换函数,以下代码应该可以正常工作:

for (int i = 0; i < listProxy.size(); ++i) { 
    funcProxy = funcProxy.arg(listProxy.at(i)); 
} 

为什么你问:从文档上QString::arg()

返回此字符串与字符串替换

因此它取代了最低数字编号最小的位置标记副本arg调用中的字符串。第一次迭代包含%1,%2%3,因此它取代%1。下一次迭代包含%2%3,因此取代%2

另外,如果你有控制权funcProxy,你可以做以下给出您可以将列表更改为QStringList

QString funcProxy = "executeProxy(\"%1\")"; 
QStringList listProxy{"a", "b", "c"}; 

funcProxy = funcProxy.arg(listProxy.join("\", \"")); 
+0

谢谢这是一个很好的解决方案 – adviner

0

如果你知道你的列表中有3完全相同的元素,你可以这样做:

funcProxy.arg(listProxy.at(0)).arg(listProxy.at(1)).arg(listProxy.at(2)); 

否则,你可以这样做:

for (int i = 0; i < listProxy.size(); ++i) 
    funcProxy.replace(QString("%%1").arg(i+1), listProxy.at(i)); 
+0

我试图避免因为它可能是三个以上。 funcProxy每次都会有所不同。似乎我必须循环浏览它。 – adviner

+0

@adviner - 查看我的编辑。 – owacoder