Вместо вызова .arg(QByteArray::number(x))
вы можете напрямую передать число как .arg(x)
.
QString str("I am %1 years old.");
int age = 100;
QString str1 = str.arg(QString::number(age));
QString str2 = str.arg(age);
Q_ASSERT(str1 == str2);
QString обеспечивает всеобъемлющие перегрузки для целочисленных аргументов, что позволяет нам удобно передавать переменныес разными типами.
Я думаю, что это ошибка при типизации.
Я думаю, это правильно.
Чтобы отбросить некоторыеВ свете ошибки неоднозначной перегрузки кажется, что QByteArray
имеет частный operator int
.(Это то, что я наблюдаю по окончании. Qt, по-видимому, не документирует это приведение типов, возможно, поскольку оно является закрытым.) Это подразумевает, что QByteArray может быть неявно преобразован в int
.Это вызовет кучу перегрузок, помечая команду как неоднозначную.Вот некоторые из перегрузок, которые были выполнены (скопировано с qstring.h
, не уверен, изменилось ли это после Qt 5.3).
QString arg(const QString &a, int fieldWidth = 0, QChar fillChar = QLatin1Char(' ')) const;
QString QString::arg(int a, int fieldWidth, int base, QChar fillChar);
QString QString::arg(uint a, int fieldWidth, int base, QChar fillChar);
QString QString::arg(long a, int fieldWidth, int base, QChar fillChar);
QString QString::arg(ulong a, int fieldWidth, int base, QChar fillChar);