我正在尝试打印出具有固定对齐方式的数字,以便如果数字为正或负,则仍将对齐。基本上,如果数字为负,则不会填充任何内容,但是,如果数字为正,则将在'+'符号所在的位置填充一个空白
以下是解释我的问题的代码:
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);
这是输出:
我知道QString :: number()具有许多可以调整精度的参数,但是我一直无法找到合适的参数来轻松实现此目的。
编辑
我最初的例子很糟糕。因此,这里有更多信息。这些值实际上是double
类型,我知道它们的值将始终为-10
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");
这是输出: