Как преобразовать int в QString? - PullRequest
325 голосов
/ 09 июля 2010

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

Ответы [ 8 ]

599 голосов
/ 09 июля 2010

Использование QString::number():

int i = 42;
QString s = QString::number(i);
112 голосов
/ 10 июля 2010

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

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

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

// Qt 4
int i = 13;    
QString printable = QString::fromLatin1("My magic number is %1. That's all!").arg(i);
22 голосов
/ 07 февраля 2015

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

QVariant(3).toString();

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

QVariant(3.2).toString();
QVariant("5.2").toFloat();
16 голосов
/ 26 июня 2013

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

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 printf(), но рекомендуется использовать QTextStream или arg(), поскольку они поддерживают Unicode string s.

13 голосов
/ 11 июля 2010

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

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

setNum() перегружен во многих отношениях.См. QString справочник по классам.

12 голосов
/ 09 июля 2010

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

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

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

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

2 голосов
/ 19 августа 2018

Если вам нужно форматирование чисел с учетом локали, используйте взамен QLocale :: toString.

2 голосов
/ 12 апреля 2016

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

...