Сохраните изображение в динамически созданный каталог в Qt

Я новичок в Qt. Я хочу сохранить обрезанное изображение при нажатии кнопки «сохранить»:

Это приложение, которое я разрабатываю, метка изображения, содержащая обрезанное изображение, которое необходимо сохранить]

Мне нужно создать каталог во время выполнения, имя каталога должно быть текстом в поле textEdit рядом с меткой «id», а имя сохраненного файла изображения должно быть текстом в поле textEdit рядом с «имя " этикетка.

Я сохранил эти значения в строках

QString id=ui->ids->toPlainText();

 QString names=ui->textEdit->toPlainText();

в событии on_saveButton_clicked я дал строки как

border2.save("C:\Qtworks\imagecrop_Jubilee\\"+ id+ "\\" +names+ ".jpg");

[border2 — это QImage, содержащий обрезанное изображение]

Но изображение не сохраняется...

пожалуйста, помогите мне решить это..


person SAHLA    schedule 13.02.2015    source источник
comment
QDir::mkpath, вероятно, поможет.   -  person Retired Ninja    schedule 13.02.2015
comment
Кстати, в Qt вы всегда можете использовать / в качестве разделителя пути. Не нужно возиться с экранированием обратной косой черты.   -  person hyde    schedule 13.02.2015


Ответы (1)


Необходимо правильно указать путь к файлу. Вместо "C:\Qtworks\... следует использовать C:\\Qtworks\\... или C:/Qtworks/....

Это связано с тем, что компилятор использует \ в качестве escape-символа в строках (для таких вещей, как \t, \n или \r). так что \\ на самом деле превращается в \.

Также вы должны создать каталог перед сохранением файла:

QDir dir;
dir.mkdir("C:/Qtworks/imagecrop_Jubilee/"+ id);
person Nejat    schedule 13.02.2015
comment
Спасибо, изображение сохраняется просто в рабочем каталоге C:/Qtworks/imagecrop_Jubilee/ Но я хочу создать папку с этим именованным идентификатором и сохранить изображение в этой папке, оно не работает, я дал код как « border2.save(C:/Qtworks/imagecrop_Jubilee/+ id+ / + имена+ .jpg);' - person SAHLA; 13.02.2015
comment
Вы должны использовать QDir::mkpath для создания каталога. Смотрите обновленный ответ. - person Nejat; 13.02.2015