2015-11-22 43 views
2

我寫了一個很長的QString超過9個爭論,我只是用這樣的:QString arg中不超過9個參數?如何處理它?

QString html = QObject::tr(
       "%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 ...").arg(a, b, c, d, e, f, g, h, i, j); 

但QtCreator產量和誤差,即不能有超過9名ARGS ...我閱讀文檔: http://doc.qt.io/qt-5/qstring.html,那裏有一個arg函數定義:

QString arg(const QString & a1, const QString & a2, const QString & a3, const QString & a4, const QString & a5, const QString & a6, const QString & a7, const QString & a8, const QString & a9) const

所以看起來這是個問題。有沒有什麼優雅的方式可以解決這個問題,或者我只能連接兩個字符串?

回答

2

你可以連續通話.arg()這樣,多達9個參數在每一個:

QObject::tr("%1 %2 %3 %4 %5 %6 %7 %8 %9 %10 ...") 
    .arg(a, b, c) 
    .arg(d) 
    .arg(e, f, g, h) 
    .arg(i, j); 
+0

如果我不知道,有多少爭論,我將有?例如,因爲參數是由用戶給出的,並且參數沒有限制? – yak

+0

你可以設置一個'QString temp(QObject :: tr(...));'並用循環中的一個參數調用'.arg'。 – LogicStuff

+1

@yak你怎麼知道這個模式呢?你可能只是試圖連接字符串?如果是這樣,只需在循環中調用['.append'](http://doc.qt.io/qt-5/qstring.html#append)或[QStringList.join](http://doc.qt .io/qt-5/qstringlist.html#join),如果它們存儲在['QStringList'](http://doc.qt.io/qt-5/qstringlist.html) –