2011-11-24 6 views
5

Sto usando QString :: il numero() per convertire i numeri in stringa per lungo tempo, ora mi chiedo se c'è qualcosa di meglio di quanto segue:Aggiungendo il numero a QString con arg(), ci sono modi migliori?

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

come posso risparmiare QString :: il numero ()? ho controllato il documento, sembra solo "% 1" è applicabile, non altre cose come "% d" potrebbe funzionare

+0

Qual è la motivazione? Per salvare la digitazione o qualcos'altro? –

+0

@r_ahlskog, sì, una specie di, e sto pensando se la stringa di formato 'printf' è possibile – daisy

+0

@r_ahlskog,% 1 sembra piuttosto generale – daisy

risposta

8

È possibile utilizzare direttamente arg() come questo

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

Qt convertirà automaticamente per voi

0

Dai un'occhiata alla documentazione di QString. Hai un sacco di overload di metodi :: arg, che prendono tipi diversi. QString non ha bisogno di sapere quale tipo sarà sotto% n, metodo che sostituisce quello% n lo saprà e metterà il valore corretto.

10

La funzione QString arg() implementa infatti molti tipi diversi e rileva automaticamente ciò che viene fornito. Fornendo più parametri per una singola chiamata arg() questo modo

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

è implementato solo per QString (e quindi const char*) parametri.

Tuttavia, è possibile concatenare arg chiamate insieme e utilizzare ancora il sistema di numerazione:

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); 
Problemi correlati