Видео ролики бесплатно онлайн

Смотреть домашний видео

Официальный сайт 4stupeni 24/7/365

Смотреть видео бесплатно

pashazz 28.05.2010 16:07

Qt SoftwareНужна помощь: копирование файлов в Qt

Сейчас занялся поддержкой игр на нескольких дисков в winegame. Делается это все через копирование файлов со всех дисков в одну папку.

Пытаюсь копировать содержимое диска в папку:

 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                       QFile file (diskPath);
_max = QFileInfo(file).size() / 1024;
QFile dest (core->discDir());
if (!dest.exists())
{
QDir t (dest.fileName());
t.mkdir(t.path());
}
connect (&dest;, SIGNAL(bytesWritten(qint64)), this, SLOT (setProgress(qint64)));
connect (&dest;, SIGNAL(aboutToClose()), this, SLOT (closeBar()));
file.copy(dest.fileName());
}
diskPath = core->discDir();
core->client()->endProgress();
}



Судя по всему, содержимое диска (QFile file (diskPath) даже не начинает копироваться, хотя он, естественно! существует.
Уточнение: мне нужно скопировать не саму папку диска (/media/cdrom которая), а ее содержимое

Просмотреть весь файл исх. кода (dvdrunner.cpp) можно здесь.


Тэги: winegame
+ 2 -
Похожие Поделиться

divius 28.05.2010 16:13 #
+ 2 -
Содержимое директории можно копировать только рекурсивно, использовать QFile для директории бесполезно, используйте QDir.
pashazz 28.05.2010 16:19 #
+ 0 -
Можно пример кода? Qt Assistant упорно молчит по этому поводу.
divius 28.05.2010 16:39 #
+ 3 -
Рекурсивное удаление директории вместе со всеми файлами:

static bool clearAndRemoveDirectory(const QString & dir)
{
QDir dirObj(dir);
foreach (QString fileName, dirObj.entryList())
{
if (fileName == "." || fileName == "..") continue;
if (QFileInfo(dir+"/"+fileName).isDir())
{
clearAndRemoveDirectory(dir+"/"+fileName);
}
else
{
dirObj.remove(fileName);
}
}

if (!dirObj.rmdir(dir))
{
Debug::print(QString::fromUtf8("Не удалось удалить временную директорию %1").arg(dir));
return false;
}

return true;
}
pashazz 28.05.2010 16:42 #
+ 0 -
хм, попробую применить.
cblp 28.05.2010 16:53 #
+ 4 -
Нехорошо использовать "/", ибо платформозависимо. Лучше dirObj.filePath(fileName).
divius 28.05.2010 17:01 #
+ 1 -
На самом деле Qt прекрасно превращает / в нужную, но вы правы.
cppmm 29.05.2010 08:54 #
+ 0 -
Думаю, именно в этом продукте это не критично. Или есть предположение, что в скором времени wine понадобится для запуска игр под виндой? :)
cblp 29.05.2010 09:12 #
+ 0 -
Из приведённого кода не очевидно, что это про wine. Да и код лучше писать правильно, вдруг его кто-то захочет позаимствовать для более кроссплатформного проекта.
cppmm 29.05.2010 09:44 #
+ 1 -
Видно из описания кода. Но вообще, ты прав, конечно, это я так шучу. :)
pashazz 29.05.2010 12:21 #
+ 1 -
Все это решается лишь QDir::separator. Который я активно использую.
cblp 29.05.2010 13:01 #
+ 0 -
А мне больше нравится dirObj.filePath(fileName), это же короче, чем dir + QDir::separator() + fileName.
pashazz 28.05.2010 22:30 #
+ 2 -
done. Теперь в winegame есть поддержка игр с множеством дисков.

Смотреть видео онлайн

Онлайн видео бесплатно


Смотреть русское с разговорами видео

Online video HD

Видео скачать на телефон

Русские фильмы бесплатно

Full HD video online

Смотреть видео онлайн

Смотреть HD видео бесплатно

School смотреть онлайн