Gibt es eine QString
-Funktion, die ein int annimmt und es als QString
ausgibt?
Verwenden Sie QString::number()
:
int i = 42;
QString s = QString::number(i);
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);
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();
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 string
s unterstützen.
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.
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 ..
Der Vollständigkeit halber können Sie die Standardbibliothek verwenden und QString qstr = QString::fromStdString(std::to_string(42));
ausführen.
Wenn Sie eine länderspezifische Zahlenformatierung benötigen, verwenden Sie stattdessen QLocale :: toString.