2011-11-24 307 views
5

我一直在使用的QString ::號碼()到數字轉換成字符串很長一段時間,現在我不知道是否還有比下面更好的東西:使用arg()向QString追加數字,有更好的方法嗎?

int i = 0; 
    QString msg = QString ("Loading %1").arg (QString::number (i)); 

我怎麼能放過的QString ::號碼( )?我檢查的文件,似乎只有「%1」是適用的,如「%d」沒有其他的東西可以工作

+0

什麼動機?爲了節省打字或其他什麼? –

+0

@r_ahlskog,是的,有點,我在想如果'printf'就像格式字符串是可能的 – daisy

+0

@r_ahlskog,%1看起來很普通 – daisy

回答

8

您可以直接使用arg()這樣

int i = 0; 
QString msg = QString ("Loading %1").arg(i); 

的Qt會自動將其轉換爲你

0

查看QString文檔。你有很多:: arg方法重載,它們採用不同的類型。 QString不需要知道%n是什麼類型,方法替換%n會知道它並將正確的值。

10

QString的arg()函數確實實現了許多不同類型,並自動檢測您提供的內容。提供多個參數到單個arg()呼叫像這樣

// Outputs "one two three" 
QString s = QString("%1 %2 %3").arg("one", "two", "three") 

僅針對的QString實現(因此const char*)的參數。

但是,你可以鏈ARG調用在一起,仍然使用的編號系統:

int i = 5; 
size_t ui = 6; 
int j = 12; 
// Outputs "int 5 size_t 6 int 12" 
qDebug() << QString("int %1 size_t %2 int%3").arg(i).arg(ui).arg(j); 
// Also outputs "int 5 size_t 6 int 12" 
qDebug() << QString("int %1 int %3 size_t %2").arg(i).arg(j).arg(ui); 
相關問題