2011-11-24 12 views
5

He estado usando QString :: número() para convertir los números de secuencia para mucho tiempo, ahora me pregunto si hay algo mejor que la siguiente:Agregar número a QString con arg(), ¿hay mejores formas?

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

¿Cómo puedo ahorrar QString :: número ()? he comprobado documento, parece que sólo "% 1" es aplicable, sin otras cosas como "% d" podría funcionar

+0

¿Cuál es la motivación? Para guardar la escritura o algo más? –

+0

@r_ahlskog, sí, más o menos, y estoy pensando si 'printf' como cadena de formato es posible – daisy

+0

@r_ahlskog,% 1 parece bastante general – daisy

Respuesta

8

Se puede utilizar directamente arg() como esto

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

Qt lo convertirá automáticamente para usted

0

Eche un vistazo a la documentación de QString. Usted tiene muchas sobrecargas de métodos :: arg, que toman diferentes tipos. QString no necesita saber qué tipo estará debajo de% n, el método reemplazando a% n lo conocerá y le dará el valor adecuado.

10

La función arg() de QString sí implementa muchos tipos diferentes y detecta automáticamente lo que usted le proporciona. Proporcionar múltiples parámetros a un solo arg() llamada como tal

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

sólo se implementa para QString (y por tanto const char*) parámetros.

Sin embargo, puede arg cadena de llamadas en conjunto y seguir utilizando el sistema de numeración:

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); 
Cuestiones relacionadas