Russian Qt Forum
Февраль 10, 2012, 16:21
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Пользовательский интерфейс (GUI)
(Модератор:
Sergeich
) >
QTreeWidget
Страниц:
1
2
[
3
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QTreeWidget (Прочитано 2773 раз)
kadr
Частый гость
Offline
Сообщений: 223
Linux FOREVER!!!
Re: QTreeWidget
«
Ответ #30 :
Август 24, 2010, 15:46 »
Цитата: crossly от Август 24, 2010, 09:35
ну а вообще если хотите посмотреть на эффект... попробуйте ui->left_pole->currentIndex() или ui->left_pole->currentIndex()->parent() к примеру... желательно их конечно же на валидность проверить...
ui->left_pole->currentIndex() - это не работает.
ui->left_pole->currentIndex()->parent() - а это работает!
Записан
Желание - это тысяча возможностей, а не желание - это тысяча причин!
kadr
Частый гость
Offline
Сообщений: 223
Linux FOREVER!!!
Re: QTreeWidget
«
Ответ #31 :
Август 25, 2010, 12:23 »
Помогите, мне нужно рекурсивно считывать содержимое папок, для дальнейшего копирования этого содержимого. Я накатал кое какой алгоритм, но он не правильно отрабатывает.
Код:
QStringList Linux_Comander::scanfolder(QString path)
{
dir_f.cd(path);
dir_f.setSorting(QDir::DirsFirst);
while(i_f != dir_f.count())
{
if ((dir_f.entryInfoList().value(i_f).isDir()) && (dir_f.entryList().value(i_f) != ".") && (dir_f.entryList().value(i_f) != ".."))
{
map_fs.append(dir_f.entryList());
i_f++;
scanfolder(dir_f.entryList().value(i_f));
}
}
return map_fs;
}
Мне надо куда то воткнуть dir_f.cdUp(), я не знаю куда! Подскажите как правильно это сделать, или может быть есть способ попроще, мне нужно, что бы при нажатии кнопки копировать, все содержимое папки, включая и вложеные папки с их содержимым, скопировалось в указанное место!
«
Последнее редактирование: Август 25, 2010, 12:25 от kadr
»
Записан
Желание - это тысяча возможностей, а не желание - это тысяча причин!
Kolobok
Бывалый
Offline
Сообщений: 475
Re: QTreeWidget
«
Ответ #32 :
Август 25, 2010, 13:52 »
QDirIterator?
Записан
kadr
Частый гость
Offline
Сообщений: 223
Linux FOREVER!!!
Re: QTreeWidget
«
Ответ #33 :
Август 25, 2010, 15:47 »
А есть в Qt какая нибудь функция, которая может скопировать всю папку с вложенными папками и файлами, челиком?
Записан
Желание - это тысяча возможностей, а не желание - это тысяча причин!
crossly
phpBB Житель матрицы
Offline
Сообщений: 1277
Re: QTreeWidget
«
Ответ #34 :
Август 25, 2010, 15:55 »
а может меда на блюдечки... ??
Записан
нет препятствий патриотам... нет преград энтузиастам...
kadr
Частый гость
Offline
Сообщений: 223
Linux FOREVER!!!
Re: QTreeWidget
«
Ответ #35 :
Август 26, 2010, 07:01 »
Цитата: crossly от Август 25, 2010, 15:55
а может меда на блюдечки... ??
Значит нет!
Записан
Желание - это тысяча возможностей, а не желание - это тысяча причин!
kadr
Частый гость
Offline
Сообщений: 223
Linux FOREVER!!!
Re: QTreeWidget
«
Ответ #36 :
Август 26, 2010, 15:58 »
Вот код для рекурсивного копирования файлов и подкаталогов!
Код:
void Linux_Comander::CopyFolder(QString strFrom, QString strTo)
{
QDir dir;
QFile file;
//strFrom - имя папки, откуда копировать
//strTo - имя папки, куда копировать
//убедимся, что имена заканчиваются слэшем, если нет - добавим
if (strTo.right(1) != "")
strTo += '/';
if (strFrom.right(1) != "")
strFrom += '/';
//создаем ("копируем") текущую папку
dir.mkdir(strTo);
qDebug() << strTo;
//будем перебирать все файлы и папки в текущей
QDirIterator itr(strFrom,QDirIterator::Subdirectories);
while(itr.hasNext())
{
QString strFilePath = itr.filePath();
QString strFileTitle = itr.fileName();
//отсекаем "." и ".."
if (itr.fileName() != "." && itr.fileName() != "..")
{
if (itr.fileInfo().isDir())
//рекурсивное погружение в найденную папку (strTo + strFileTitle)
CopyFolder(strFilePath, strTo + strFileTitle);
else
//просто копируем файл
file.copy(strFilePath, strTo + strFileTitle);
}
itr.next();
}
}
Записан
Желание - это тысяча возможностей, а не желание - это тысяча причин!
kadr
Частый гость
Offline
Сообщений: 223
Linux FOREVER!!!
Re: QTreeWidget
«
Ответ #37 :
Август 27, 2010, 07:24 »
Народ помогите разобраться, у меня есть алгоритм рекурсивного удаления папок вместе с их содержимым, работает впринципе нормально, но вот проблема, если перед удалением зайти в удаляемый каталог, то при удалении он пишет:
Код:
QFileSystemWatcher: FindNextChangeNotification failed!! (???????? ? ???????.)
А после перезагрузки приложения папки уже нет.
Код:
bool Linux_Comander::clearAndRemoveDirectory(QString dir)
{
QDir dirObj(dir);
foreach (QString fileName, dirObj.entryList())
{
if (fileName == "." || fileName == "..") continue;
if (QFileInfo(dirObj.filePath(fileName)).isDir())
{
clearAndRemoveDirectory(dirObj.filePath(fileName));
}
else
{
dirObj.remove(fileName);
}
}
if (!dirObj.rmdir(dir))
{
QMessageBox::information(this,"Ошибка удаления","Не удалось удалить временную директорию "+dir);
return false;
}
left_pole_update(model_l->index(ui->adress_line_left->text().trimmed()));
right_pole_update(model_r->index(ui->adress_line_right->text().trimmed()));
return true;
}
Записан
Желание - это тысяча возможностей, а не желание - это тысяча причин!
Страниц:
1
2
[
3
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> Печать
=> Интернационализация, локализация
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
=> Архив
===> Программирование
=====> Python
===> Веб программирование
=====> PHP, PERL, CGI
Загружается...