2012-03-09 13 views
8

Tengo un problema con la creación de dir con Qt. Me gustaría crear un directorio en documents'dir así, hago algunas cosas por el estilo:QDir mkdir con absolutepath

QString path("C:/Users/Me/Documents/MyApp/profiles/"); 
Qdir dir = QDir::root(); 
dir.mkdir(path); 

Pero eso no funciona! Tengo una prueba con "/" y "\" para los separadores pero en los dos casos que no funcionan.

¿Cómo puedo crear mi directorio?

Gracias.

+0

u obtuviste el solución .. – shofee

Respuesta

11

Intente utilizar QDir::mkpath como dir.mkpath(path);

2

QDir dir = QDir::root() crea una instancia de QDir configurado para apuntar a la raíz y las copias que se ajuste a dir. Para evitar la copia y el código adicionales, puede usar QDir dir(QDir::root);. En Windows apuntará a la raíz de la unidad del sistema, generalmente C:\.

dir.mkdir(path); intentará crear un subdirectorio denominado path en el directorio actualmente configurado (raíz). Este método espera un único nombre de directorio y no una ruta completa. También devuelve un resultado bool que debe comprobar.

Probablemente desee llamar al dir.mkpath(path) que intentará crear el subdirectorio especificado junto con todos los directorios principales necesarios para ello. Nuevamente, debe verificar el resultado para ver si fue exitoso.

23

Usted puede hacer esto:

QDir dir(path); 
if (!dir.exists()){ 
    dir.mkdir("."); 
} 
+0

Neat, gracias por el truco! –

+1

Preferiblemente dir.mkpath (".") Como se indica aquí: https://stackoverflow.com/a/11517874/4706859 de lo contrario, si se deben crear varias carpetas, su llamada a dir.mkdir() fallará. También tenga en cuenta que no hay necesidad de una prueba para la existencia de directorio a menos que realmente tenga la intención de hacer algo con su resultado. Una prueba para el éxito de dir.mkpath(), por otro lado, puede ser útil. –