使用零填充(前导零)将int转换为QString

我想“串”一个数字,并添加零填充,如printf("%05d")如果数字小于5位数字将添加前导零。

用这个:

 QString number = QString("%1").arg(yourNumber, 5, 10, QChar('0')); 

这里的5对应于printf("%05d") 。 10是基数,你可以把hex数字打印出来。

QString QString :: rightJustified(int width,QChar fill = QLatin1Char(''),bool truncate = false)const

 int myNumber = 99; QString result; result = QString::number(myNumber).rightJustified(5, '0'); 

结果现在是00099

简短例子:

 int myNumber = 9; //Arg1: the number //Arg2: how many 0 you want? //Arg3: The base (10 - decimal, 16 hexadecimal - if you don't understand, choose 10) // It seems like only decimal can support negative numbers. QString number = QString("%1").arg(myNumber, 2, 10, QChar('0')); Output will be: 09 

尝试:

 QString s = s.sprintf("%08X",yournumber); 

编辑:根据http://qt-project.org/doc/qt-4.8/qstring.html#sprintf文档:;

警告 :我们不build议在新的Qt代码中使用QString :: sprintf()。 相反,考虑使用QTextStream或arg(),它们都可以无缝地支持Unicodestring,并且是types安全的。 这是一个使用QTextStream的例子:

 QString result; QTextStream(&result) << "pi = " << 3.14; // result == "pi = 3.14" 

阅读其他文档,了解从此方法中缺less的function。

我正在尝试(这工作,但繁琐)。

 QString s; s.setNum(n,base); s = s.toUpper(); presision -= s.length(); while(presision>0){ s.prepend('0'); presision--; } 

自从VB 5以来,我使用了一种技术

 QString theStr=QString("0000%1").arg(theNumber).right(4);