Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
fedyaevi
2 / 2 / 1
Регистрация: 18.05.2017
Сообщений: 38
1

FileSystemModel

20.12.2017, 11:37. Просмотров 112. Ответов 8
Метки нет (Все метки)

У меня есть перегруженная(только папочки чтобы красивае были перегрузил)

C++ (Qt)
1
QFileSystemModel
отображаю я её на
C++ (Qt)
1
QListView
вот у меня была идея сделать так чтобы пользователь спокойно перемещался по дискам, типо ждешь C ->переходишь в C:/

ну я навернул сомбобокс и вроде как отображаю в него через
C++ (Qt)
1
QDir::drivers()
всё бы хорошо но вот проблемы с комбобоксом возникают при вставке флешки(я её добавляю всё хорошо и добавляю еще индекс с индексом Флешки) и все вроде ровно идет

И тут я вытыкиваю флешку

И воля, все
C++ (Qt)
1
QListView
белое(причём я трекал по сути QFileSystem подаёт на отрисовку содержимое вданной дирректории(например С:/)) и ничего не отрисовывается

Может кто подскажет в чём может быть проблема

Особо пытливым могу исходник скинуть

Заранее спасибо.
0
nmcf
6514 / 5743 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
20.12.2017, 12:43 2
Если диска нет, что должно отобразиться-то?
0
fedyaevi
2 / 2 / 1
Регистрация: 18.05.2017
Сообщений: 38
20.12.2017, 12:46  [ТС] 3
Цитата Сообщение от nmcf Посмотреть сообщение
Если диска нет, что должно отобразиться-то?
диска нет(например диск F:/)
я стою в диске (C:/)
и хоп я вытаскиваю диск и пустое окно
как это исправить я хз(пытался насильно заставить отобразить в QListView но безуспешно, QFileSysyemModel подаёт наотрисовку я трекал, а вот QListView не отрисовывает)
0
nmcf
6514 / 5743 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
20.12.2017, 12:51 4
И что оно само собой пустое становится, только от извлечения даже когда rootPath на другом диске?
0
fedyaevi
2 / 2 / 1
Регистрация: 18.05.2017
Сообщений: 38
20.12.2017, 12:57  [ТС] 5
Цитата Сообщение от nmcf Посмотреть сообщение
И что оно само собой пустое становится, только от извлечения даже когда rootPath на другом диске?
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
void MainWindow::update_combobox()
{
    QFileInfoList tmp=QDir::drives();
    int tmp_idx;
    qDebug()<<"tmp size = "<<tmp.size();
    qDebug()<<"drivers = "<<drivers.size();
    if(tmp.size()>drivers.size())
    {
        for(int i=0;i<tmp.size();++i)
        {
            tmp_idx=ui->comboBox->findText(tmp.at(i).absolutePath());//проверка на наличие
            if(tmp_idx==-1)//если нет - добавляем
            {
                if(tmp.at(i).isReadable())
                {
                    ui->comboBox->addItem(QIcon(":/imag/Hopstarter-Plastic-Mini-Drive-Green.ico"),tmp.at(i).absolutePath());
                }
                else
                {
                    ui->comboBox->addItem(QIcon(":/imag/Hopstarter-Plastic-Mini-Drive.ico"),tmp.at(i).absolutePath());
                }
            }
        }
        drivers=tmp;
        return;
    }
    else if(tmp.size()<drivers.size())//если вытащили флешку
    {
//        flag_root=false;
//        qDebug()<<"flag = "<<flag_root;
//        for(int i=0;i<drivers.size();++i)
//        {
//            if(i<tmp.size())
//            {
//                tmp_idx=ui->comboBox->findText(tmp.at(i).absolutePath());
//                if(tmp_idx==-1)
//                {
////                    ui->comboBox->removeItem(i+1);
//                }
//            }
//            else
//            {
////                ui->comboBox->setCurrentIndex(0);
////                ui->comboBox->removeItem(i+1);
//            }
//        }
//        drivers=tmp;
//        return;
    }
    else
    {
        return;
    }
Пока закомментил
при вытаскивании флешки сейчас выбрасывает в корень(где все диски)(если в флешке нахожусь)
Хотелось бы при вытаскивании флешки чтобы переходило в блищайший диск(флешку) и удаляла диск из комбобокса
0
nmcf
6514 / 5743 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
20.12.2017, 13:56 6
Тебе проще перезаполнить ComboBox, чем искать и удалять.
0
fedyaevi
2 / 2 / 1
Регистрация: 18.05.2017
Сообщений: 38
20.12.2017, 14:34  [ТС] 7
Цитата Сообщение от nmcf Посмотреть сообщение
Тебе проще перезаполнить ComboBox, чем искать и удалять.
я тоже так думал, но проблема возникла в том,что при перезаполнении просто всё удаляется и нету пути никакого(типо нет дисков и поэтомупрога крашиться) есть мысль отсоеденять слот при перезаполненнии и потом зановоконнектить)

еще один вопрос

Можно ли узнать корень пути типо:
C:/folder/qt/ -> нужно отпарсить просто C:/ вдокументации к QDir не нашёл такого
можно ли как нибудь локонично это сделать?
0
nmcf
6514 / 5743 / 2617
Регистрация: 14.04.2014
Сообщений: 24,494
20.12.2017, 15:51 8
Подстроку выдели просто.
0
fedyaevi
2 / 2 / 1
Регистрация: 18.05.2017
Сообщений: 38
20.12.2017, 15:54  [ТС] 9
Цитата Сообщение от nmcf Посмотреть сообщение
Подстроку выдели просто.
парсанул)))
0
20.12.2017, 15:54
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru