web-dev-qa-db-ja.com

IntをQStringに変換する方法

int を取り、それをQStringとして出力するQString関数はありますか?

323
Ahmad

QString::number() :を使用してください。

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

もしあなたがそれを何らかのテキストコンテキスト内の文字列に入れたいのであれば、+演算子を忘れてください。簡単に

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

さらにあなたが望むものを変換するために、あなたはQVariantを使うことができます。 intからQStringへのあなたは得る:

QVariant(3).toString();

floatからstringへ、またはstringからfloatへ:

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

さらに別の選択肢は、C++でcoutを使用するのとほぼ同じ方法で、 QTextStream<<演算子を使用することです。

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()と演算子<<を使用すると、混合型で長い文字列をフォーマットする場合に便利です。

注意: Cスタイルのsprintf()ステートメントを模倣するためにprintf()機能を使用したくなるかもしれませんが、Unicode QTextStreamsをサポートしているのでstringまたはarg()を使用することをお勧めします。

15
Matthew Kraus

私はいつもQString::setNum()を使います。

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

setNum()はいろいろな意味でオーバーロードされています。 QStringクラスリファレンスを参照してください。

12
Narek

最も単純な形式では、 Georg Fritzsche の答えを使用してください。

もう少し高度な人は、これを使うことができます。

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

ドキュメントと例を入手してください ここ ..

11
liaK

完全を期すために、標準ライブラリを使用してQString qstr = QString::fromStdString(std::to_string(42));を実行することができます。

1
Morgan

ロケールを意識した数値のフォーマットが必要な場合は、代わりにQLocale :: toStringを使ってください。

1
André