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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: qfilesystemmodel + qtableview+монтирование флеш  (Прочитано 2057 раз)
koldun90
Крякер
****
Offline Offline

Сообщений: 345


Просмотр профиля
« : Март 14, 2015, 20:06 »

здравствуйте сделал простенький проект
tableview и две кнопки pushbutton
отображаю стандартный qfilesystemmodel в tablewview


Код:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    model1=new QFileSystemModel;
    model1->setFilter(QDir::AllDirs | QDir::Files);
    model1->setRootPath(QDir::currentPath());
    ui->tableView->setModel(model1);

}

MainWindow::~MainWindow()
{
    delete ui;
}

//КЛик по кнопке монтировать

void MainWindow::on_pushButton_clicked()
{
    int k=system(QString("mount /mnt/sdb1").toLocal8Bit().data());
    if (k==0)
    {
        QMessageBox msg;
        msg.setText(QString::fromLocal8Bit("смонтировано"));
        msg.exec();
        ui->tableView->setRootIndex(model1->index("/mnt/sdb1"));
    }
}

//Клик по кнопке размонтировать

void MainWindow::on_pushButton_2_clicked()
{
    int k=system(QString("umount /mnt/sdb1").toLocal8Bit().data());
    if (k==0)
    {
        QMessageBox msg;
        msg.setText(QString::fromLocal8Bit("размонтировано"));
        msg.exec();
        ui->tableView->setRootIndex(model1->index("/"));
    }
}


//переход в каталог по двойному клику
void MainWindow::on_tableView_Doubleclicked(const QModelIndex &index)
{
    if (model1->fileInfo(index).isDir())
    {
        if (model1->fileInfo(index).isReadable())
        {
            ui->tableView->setRootIndex(index);
        }
    }
}

Смысл в том что когда я монтирую устройство tableview переходит в каталог с примонтированным устройством (/mnt/sdb1)
когда я размонтирую устройство переходит в корневой каталог ("/")
Ну и соответственно когда я кликаю двойным нажатие мыши по папке он заходит в папку.

Проблема заключается в следующем:
Допустим я делаю вот так.
1) Запускаю прогу
2) жму кнопку монтировать  --устройство примонтировалось отобразилось сообщение смонтировано и tableview перешел в каталог /mnt/sdb1 отображается содержимое
3) потом жму размонтировать--- устройство размонтировалось отобразилось сообщение размонтировано и  tableview перешел в каталог /--корень


4) жму снова кнопку монтировать---устройство примонтировалось отобразилось сообщение смонтировано и tableview перешел в каталог /mnt/sdb1 НО все содержимое флешки не отображается видно только папку с .. и с . хотя на флешке есть и папки и файлы.

Так что проблема собственно что при повторном монтировании не отображается содержимое /mnt/sdb1 хотя стандартный менеджер операционки видит все каталоги и папки на ней даже после повторного монтирования...
что можно сделать?
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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