http://doc.qt.io/qt-5/qstring.html#arg中的QString文档说
这是什么意思?有人可以用例子来解释吗?使用arg()的一个优点 sprintf()是那个的顺序 编号的地方标记可以改变,如果 应用程序的字符串是 翻译成其他语言,但 每个arg()仍将替换 编号最低的未替代地点 标记,无论它出现在何处。
答案 0 :(得分:6)
int day = 1;
int month = 12;
int year = 2010;
QString dateString = QString(tr("date is %1/%2/%3")).arg(month).arg(day).arg(year);
// dateString == "date is 12/1/2010";
德语翻译“Das Datum ist:%2.%1.%3”:dateString =“Das Datum ist:1.12.2010”
答案 1 :(得分:5)
假设我们从:
开始QString format("%1: %2 %3);
然后致电:
format.arg("something");
格式现在为:
“某事:%1%2”
...意思是你可以随时建立字符串。
通过Qt的翻译机制可以改变地点标记的顺序,你可以这样说:
format = tr("Hi, %1, I hope you are %2");
并将其添加到您的翻译表中,并为不同的语言提供不同顺序的参数。
答案 2 :(得分:4)
要添加到sje397的答案:
在国际化您的应用程序时,您可以使用以下字符串:
QString formatInAnOtherLanguage("%3 %1 %2");
所以在致电时
formatInAnOtherLanguage.arg("something");
formatInAnOtherLanguage将
"%3 something %2"
这是arg函数相对于sprintf函数的主要优点