Russian Qt Forum
Ноябрь 21, 2024, 23:41 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QFileSystemModel не не обновляется с шарами samba  (Прочитано 8133 раз)
kizza
Гость
« : Июль 21, 2011, 01:42 »

QString flPath = "\\\\XXX.XXX.XXX.XXX\\myshare\\"

QFileSystemModel *fileModel= new QFileSystemMode();
QListView *fileList=  new QListView();
fileList->setModel(fileModel);
fileList->setRootIndex(fileModel->setRootPath(flPath));

модель прикручиваем к windows шаре
все работает но есть маленькое "НО" не обновляется при изменении модели
т.е. например при создании или удалении файла, после перезапуска окна все видно.
При flPath равном например "c:\\" все замечательно работает и обновляется...
Есть ли способ решить проблему?
« Последнее редактирование: Июль 21, 2011, 01:45 от kizza » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Июль 21, 2011, 01:44 »

И не будет, на сетевые шары не вешается вотчер.
Записан
kizza
Гость
« Ответ #2 : Июль 21, 2011, 08:27 »

Может есть предложения.... куда копать ....
У меня только вертится "вручную" дергать модель после любых изменений, например fileModel->update (но такого метода нет) а каким методом перечитывать пока не нашел.
« Последнее редактирование: Июль 21, 2011, 08:39 от kizza » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Июль 21, 2011, 13:25 »

Да, так и надо делать. Ручной апдейт там легко делается (я делал) - надо дергать слот какой-то (типа обновиДир(QString), к-ый дергается вотчером.
Записан
kizza
Гость
« Ответ #4 : Июль 22, 2011, 09:27 »

Обнаружился еще один неприятный момент  не открываются файлы (с smb шары) с помощью: QDesktopServices::openUrl(QUrl::fromLocalFile(fileModel->filePath(idxFile)));
и опять таки локально все работает... Грустный
Записан
Alex_ryabis
Новичок

Offline Offline

Сообщений: 7


Просмотр профиля
« Ответ #5 : Июнь 06, 2023, 20:13 »

Да, так и надо делать. Ручной апдейт там легко делается (я делал) - надо дергать слот какой-то (типа обновиДир(QString), к-ый дергается вотчером.
Тема умерла, а вопрос для меня стал актуален!
Можно поподробнее, как вручную обновить QFileSystemModel?
Создаю model в конструкторе:
Код:
    model = new QFileSystemModel(this);
    model->setFilter(QDir::AllEntries);
    model->setRootPath("");
    ui->listView->setModel(model);
Затем, обрабатываю клики:
Код:
void TWgtFileList::on_listView_clicked(const QModelIndex &index)
{
    QFileInfo fileInfo = model->fileInfo(index);
    if (fileInfo.fileName() == "..")
    {
        QDir dir = fileInfo.dir();
        dir.cdUp();
        ui->listView->setRootIndex(model->index(dir.absolutePath()));
        ui->lblPath->setText(model->filePath(ui->listView->rootIndex()));
    }
    else if (fileInfo.fileName() == ".")
    {
        ui->listView->setRootIndex(model->index(""));
        ui->lblPath->setText(model->filePath(ui->listView->rootIndex()));
    }
    else if (fileInfo.isDir())
    {
        QString str = model->filePath(ui->listView->rootIndex());
        ui->listView->setRootIndex(index);
        ui->lblPath->setText(str);
    }
    else if (fileInfo.isFile())
        fName = fileInfo.absoluteFilePath();
}

Если одновременно записать файл в сетевую папку, она в модели не обновляется. Что надо "дёрнуть"?

Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 22.