【发布时间】:2015-12-02 20:32:01
【问题描述】:
我有以下 QString:
QString funcProxy = "executeProxy(\"%1\", \"%2\", \"%3\")";
每个 on 的数据在:
QList<QString> listProxy;
如何使用 arg() 方法将 listProxy 中的数据添加到 funcProxy?
funcProxy.arg(??);
谢谢
【问题讨论】:
标签: qt
我有以下 QString:
QString funcProxy = "executeProxy(\"%1\", \"%2\", \"%3\")";
每个 on 的数据在:
QList<QString> listProxy;
如何使用 arg() 方法将 listProxy 中的数据添加到 funcProxy?
funcProxy.arg(??);
谢谢
【问题讨论】:
标签: qt
关于@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("\", \""));
【讨论】:
如果您知道列表中恰好有 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));
【讨论】: