wake-up-neo.com

Wie konvertiere ich int nach QString?

Gibt es eine QString -Funktion, die ein int annimmt und es als QString ausgibt?

330
Ahmad

Verwenden Sie QString::number() :

int i = 42;
QString s = QString::number(i);
606
Georg Fritzsche

Und wenn Sie es in einem Textkontext in eine Zeichenfolge setzen möchten, vergessen Sie den + -Operator. Mach einfach:

// 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);
113
Kamil Klimek

Außerdem können Sie mit QVariant konvertieren, was Sie wollen. Für ein int bis ein QString erhalten Sie:

QVariant(3).toString();

A float bis A string oder A string bis A float:

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

Eine weitere Möglichkeit besteht darin, QTextStream und den Operator << auf die gleiche Weise zu verwenden, wie Sie cout in C++ verwenden würden:

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

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

Da der Operator <<() überladen wurde, können Sie ihn für mehrere Typen verwenden, nicht nur für int. QString::arg() ist überladen, zum Beispiel arg(int a1, int a2), aber es gibt keine arg(int a1, QString a2), daher ist die Verwendung von QTextStream() und Operator << praktisch, wenn längere Zeichenfolgen mit gemischten Typen formatiert werden.

Achtung: Sie könnten versucht sein, die Funktion sprintf() zu verwenden, um die Anweisungen des C-Stils printf() nachzuahmen. Es wird jedoch empfohlen, sie zu verwenden QTextStream oder arg(), weil sie Unicode strings unterstützen.

16
Matthew Kraus

Ich benutze immer QString::setNum().

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

setNum() ist in vielerlei Hinsicht überlastet. Siehe QString Klassenreferenz.

13
Narek

Verwenden Sie in der einfachsten Form die Antwort von Georg Fritzsche

Für ein bisschen fortgeschrittene können Sie dies verwenden,

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

Holen Sie sich die Dokumentation und ein Beispiel hier ..

12
liaK

Der Vollständigkeit halber können Sie die Standardbibliothek verwenden und QString qstr = QString::fromStdString(std::to_string(42)); ausführen.

2
Morgan

Wenn Sie eine länderspezifische Zahlenformatierung benötigen, verwenden Sie stattdessen QLocale :: toString.

2
André