QString's arg()
function does indeed implement many different types and automatically detect what you provide it. Providing multiple parameters to a single arg()
call like so
// Outputs "one two three"
QString s = QString("%1 %2 %3").arg("one", "two", "three")
is only implemented for QString (and hence const char*
) parameters.
However, you can chain arg calls together and still use the numbering system:
int i = 5;
size_t ui = 6;
int j = 12;
// Outputs "i: 5, ui: 6, j: 12"
qDebug() << QString("i: %1, ui: %2, j: %3").arg(i).arg(ui).arg(j);
// Also outputs "i: 5, ui: 6, j: 12"
qDebug() << QString("i: %1, ui: %3, j: %2").arg(i).arg(j).arg(ui);
UPDATE
Qt 5.14 introduced a variadic templated form of arg which should allow multiple non-string args to a single call:
template <typename Args> QString QString::arg(Args &&... args) const
Args can consist of anything that implicitly converts to QString, QStringView or QLatin1String.
printf
like format string is possible – Phasia