QString ::数字填充,如果数字为正数则​​为零

时间:2018-07-18 18:37:59

标签: string-formatting padding qstring

我正在尝试打印出具有固定对齐方式的数字,以便如果数字为正或负,则仍将对齐。基本上,如果数字为负,则不会填充任何内容,但是,如果数字为正,则将在'+'符号所在的位置填充一个空白

以下是解释我的问题的代码:

qDebug() << "current behaviour";
qDebug() << "Num:" << QString::number(-5);
qDebug() << "Num:" << QString::number(5);
qDebug() << "desired behaviour";
qDebug() << "Num:" << QString("-5");
qDebug() << "Num:" << QString(" 5");


qDebug() << "this works, but would like to avoid this much typing...";
int val = -5;
qDebug() << "Num:" << QString(val >= 0, ' ') + QString::number(val);
val = 5;
qDebug() << "Num:" << QString(val >= 0, ' ') + QString::number(val);

这是输出:

enter image description here

我知道QString :: number()具有许多可以调整精度的参数,但是我一直无法找到合适的参数来轻松实现此目的。

编辑

我最初的例子很糟糕。因此,这里有更多信息。这些值实际上是double类型,我知道它们的值将始终为-10 QString::arg())

qDebug() << "current output";
qDebug() << "num:" << QString("%1").arg( 5.532,4,'f',1,QChar('0'));
qDebug() << "num:" << QString("%1").arg(-5.532,4,'f',1,QChar('0'));
qDebug() << "num:" << QString("%1").arg( 0.532,4,'f',1,QChar('0'));
qDebug() << "num:" << QString("%1").arg(-0.532,4,'f',1,QChar('0'));
qDebug() << "desired output";
qDebug() << "num:" << QString(" 5.5");
qDebug() << "num:" << QString("-5.5");
qDebug() << "num:" << QString(" 0.5");
qDebug() << "num:" << QString("-0.5");

这是输出:

enter image description here

0 个答案:

没有答案