Как преобразовать int в QString?

Есть ли функция QString, которая принимает int и выводит ее как QString?

Ответ 1

Используйте QString::number():

int i = 42;
QString s = QString::number(i);

Ответ 2

И если вы хотите поместить его в строку в каком-то текстовом контексте, забудьте о +. Просто выполните:

// Qt 5 + C++11
auto i = 13;    
auto printable = QStringLiteral("My magic number is %1. That all!").arg(i);

// Qt 5
int i = 13;    
QString printable = QStringLiteral("My magic number is %1. That all!").arg(i);

// Qt 4
int i = 13;    
QString printable = QString::fromLatin1("My magic number is %1. That all!").arg(i);

Ответ 3

Кроме того, чтобы преобразовать все, что вы хотите, вы можете использовать QVariant. Для int a QString вы получаете:

QVariant(3).toString();

A float до a string или string до float:

QVariant(3.2).toString();
QVariant("5.2").toFloat();

Ответ 4

Еще один вариант - использовать QTextStream и оператор << во многом так же, как вы бы использовали cout в С++:

QPoint point(5,1);
QString str;
QTextStream(&str) << "Mouse click: (" << point.x() << ", " << point.y() << ").";

// OUTPUT:
// Mouse click: (5, 1).

Поскольку оператор <<() перегружен, вы можете использовать его для нескольких типов, а не только int. QString::arg() перегружен, например arg(int a1, int a2), но нет arg(int a1, QString a2), поэтому использование QTextStream() и оператора << удобно при форматировании более длинных строк со смешанными типами.

Предостережение: Возможно, у вас возникнет соблазн использовать средство sprintf() для имитации операторов C style printf(), но рекомендуется использовать QTextStream или arg(), поскольку они поддерживают Unicode string s.

Ответ 5

Я всегда использую QString::setNum().

int i = 10;
double d = 10.75;
QString str;
str.setNum(i);
str.setNum(d);

setNum() перегружен многими способами. См. Ссылку класса QString.

Ответ 6

В нем простейшая форма, используйте ответ Георгия Фрицше

Для немного расширенного, вы можете использовать это,

QString QString::arg ( int a, int fieldWidth = 0, int base = 10, const QChar & fillChar = QLatin1Char( ' ' ) ) const

Получить документацию и пример здесь..

Ответ 7

Просто для полноты вы можете использовать стандартную библиотеку и сделать QString qstr = QString::fromStdString(std::to_string(42));