Помогите пожалуйста. У меня есть одна проблема, мне нужно сохранить результаты работы в программе в виде скриншота в папку, где находиться сама программа.
Вот main.cpp:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
QScreen *screen = qApp->primaryScreen();
int x = screen->virtualGeometry().width() / 2 - w.width() / 2;
int y = screen->virtualGeometry().height() / 2 - w.height() / 2;
w.setGeometry(x, y, 600, 300);
w.show();
QDir::setCurrent(QCoreApplication::applicationDirPath());
return a.exec();
}
Вот эта строчка определяет путь, где должны создаваться папки, по пути выполнения программы:
QDir::setCurrent(QCoreApplication::applicationDirPath());
Вот как должны создаваться папки:
void MainWindow::hiding()
{
QDir dir;
dir.mkpath("./Results/");
dir.mkdir("9 А");
l_name1.mkpath("./Results/9 А/");
l_name1.mkdir(ui->l9_1->text());
saveSettings();
}
void MainWindow::on_start_2_clicked()
{
QString dir("./Results/");
QUrl url = QUrl::fromLocalFile(dir);
QDesktopServices::openUrl(url);
}
Ну и сам скриншот:
grab().save("./Results/9 А/Л1 Складання та випробування електромагніту/" + name->value("names", ui->textEdit->toPlainText()).toString() + "Завдання 2.png");
Но оно вместо того, чтобы создавать папку за папкой, делает вот что(три пустые папки):
Используйте mkpath
, только в качестве аргумента укажите полный путь который необходимо создать:
QString path = "./Results/9 А/Л1 Складання та випробування електромагніту/";
QDir dir;
if( dir.mkpath(path) ) {
// mkpath - вернет true даже если путь уже существует
//Если все хорошо, то сохраняем файлы по этому пути
grab().save(path + "<prefix>_Zavdannya_2.png");
} else {
// Хьюстон, у нас проблемы...
}
Если же вам необходимо "задерживаться на этажах" ваших папок, то тогда после создания папки в нее необходимо войти:
QDir dir;
dir.mkdir(dirName);
dir.cd(dirName);
// делаем что-то очень важное в папке и создаем новую, вложенную
dir.mkdir(dirName2);
Теперь новые папки будут создаваться (при помощи объекта dir) внутри, то есть относительно директории dirName
и так далее...
p.s. в качестве рекомендации, лучше в качестве имен папок и файлов использовать латиницу (можно и транслит) и пробелы заменять на знак подчеркивания _
.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Начал изучать язык СиПытаюсь скомпилировать простенькую программку, и выбивает такую ошибку
В общем дело такое, мне надо отследить свайп, я решил использовать jquerymobile