10進数を特定のQString形式にフォーマットすることについて質問があります。基本的に、プログラムには任意の値を入力できる入力ボックスがあります。このボックスの値を "+05.30"(値に基づく)の形式に変換します。値は+/- 99.99に制限されます。
いくつかの例は次のとおりです。
.2-> +00.02
-1.5-> -01.50
9.9-> +09.90
このようなコンバータを使用することを考えていますが、いくつかの明らかな問題があります(先頭に0がない、先頭に+記号がない)。
QString temp = QString::number(ui.m_txtPreX1->text().toDouble(), 'f', 2);
この質問にはいくつかの類似点がありましたが、フロントエンドとバックエンドの両方のパディングを結び付けていません。
intをゼロパディング(先行ゼロ)付きのQStringに変換
この問題に取り組む方法のアイデアはありますか?あなたの助けに感謝します!ありがとう!
サインを手動で追加する必要があります:
QString("%1%2").arg(x < 0 ? '-' : '+').arg(qFabs(x),5,'f',2,'0');
編集:最悪なことは、実際には内部関数QLocalePrivate:doubleToString
があり、強制符号と両端のパディングを同時にサポートすることですが、これらのオプションでのみ使用されますQString::sprintf
、ではない:
QTextStream
とその<<
演算子。記号を強制的に表示できますが、幅やQString::arg
:幅を強制できますが、符号はできません。しかし、QTextStream
の場合はバグかもしれません。