Добавление числа к QString с помощью arg(), есть ли лучшие способы?

Я давно использую QString::number () для преобразования чисел в строку, теперь мне интересно, есть ли что-то лучше, чем следующее:

  int i = 0;
  QString msg = QString ("Loading %1").arg (QString::number (i));

Как я могу сэкономить QString::number ()? я проверил документ, кажется, что применимо только "%1", никакие другие вещи, такие как "%d", не могут работать

3 ответа

Решение

Вы можете напрямую использовать arg() как это

int i = 0;
QString msg = QString ("Loading %1").arg(i);

Qt автоматически конвертирует его для вас

QString-х arg() Функция действительно реализует много разных типов и автоматически определяет, что вы ей предоставляете. Предоставление нескольких параметров одному arg() звони так

// Outputs "one two three"
QString s = QString("%1 %2 %3").arg("one", "two", "three")

реализован только для QString (и, следовательно, const char*) параметры.

Тем не менее, вы можете объединить вызовы arg и использовать систему нумерации:

int i = 5;
size_t ui = 6;
int j = 12;
// Outputs "int 5 size_t 6 int 12"
qDebug() << QString("int %1 size_t  %2 int%3").arg(i).arg(ui).arg(j);
// Also outputs "int 5 size_t 6 int 12"
qDebug() << QString("int %1 int %3 size_t %2").arg(i).arg(j).arg(ui);

Взгляните на документацию QString. У вас много перегрузок метода::arg, которые принимают разные типы. QString не нужно знать, какой тип будет находиться под%n, метод, заменяющий этот%n, узнает его и примет правильное значение.

Другие вопросы по тегам