© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
16 мая 2018 г. 3:52

Проблема с combobox

Доброго всем утра! Проблема следующая: у меня есть определенная директория в которой находятся файлы, у некоторых из этих файлов одинаковые имена но разный тип (txt, doc, pdf), я хочу чтобы все имена файлов отобразились на combobox без указания типа файла, но имена на combobox не повторялись

  • #
  • Ответ был помечен как решение
  • 16 мая 2018 г. 7:57

Добрый день!


Для этого нужно считать имена всех файлов в директории.
Потом подготовить список имён уже без дублей, с игнорированием расширения файла.
И после этого установить список в ComboBox

QStringList fileNames; // Список имён файлов без дублей для установки в ComboBox

QDirIterator it(QDir::currentPath(), QDir::Files); // Для получения полного списка файлов используем QDirIterator

// Проверяем все имена файлов
while (it.hasNext())
{
    // С помощью информации о файле
    QFileInfo fileInfo(it.next());
    QString fileName = fileInfo.baseName(); // метод baseName возвращает только имя файла без расширения
    // Если имя файла не содержится в списке
    if (!fileNames.contains(fileName))
    {
        // то добавляем его
        fileNames.append(fileName);
    }
}

// Устанавливаем список в комбобокс
ui->comboBox->addItems(fileNames);

Спаси за помощь! Помогло!

Спасибо)

Добрый вечер! У меня ещё один маленький вопросик, как ComboBox очистить от пустых значений, которые получились в результате "обрезания " названий файлов. Код:

QStringList fileNames; // Список имён файлов без дублей для установки в Combobox

        QDirIterator it(".//Моя папка", QDir::Files); // Для получения полного списка файлов используем QDirIterator
        // Проверяем все имена файлов
        while (it.hasNext())
        {
            // С помощью информации о файле
            QFileInfo fileInfo(it.next());
            QString fileName = fileInfo.baseName(); // метод baseName возвращает только имя файла без расширения
            QString tirName;
            tirName=fileName.section('_', -4,-4);
            // Если имя файла не содержится в списке
            if (!fileNames.contains(tirName))
            {
                // то добавляем его
                //fileNames.append(fileName);
                //tirName=fileName.section('_', -4,-4);
                fileNames.append(tirName);
            }
        }
        // Устанавливаем список в комбобокс
        ui->comboBox->addItems(fileNames);

 

Названия файлов содержат несколько слов разделёнными символом "_"

Просто не добавлять эти пустые значения на этапе создания списка для ComboBox


if (!tirName.isEmpty() && !fileNames.contains(tirName))
{
      fileNames.append(tirName);
}

Спасибо за очередную помощь!

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, Авторизуйтесь или Зарегистрируйтесь
22 мая 2018 г. 9:32
nrjjejdjdhhrjf

C++ - Тест 005. Структуры и Классы

  • Результат 75 баллов
  • Очки рейтинга 2
21 мая 2018 г. 8:30
Nasty

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат 10 баллов
  • Очки рейтинга -10
20 мая 2018 г. 12:26
Venic

C++ - Тест 002. Константы

  • Результат 58 баллов
  • Очки рейтинга -2
Последние комментарии
19 мая 2018 г. 12:44
EVILEG

Django - Snippet 001. get_object_or_none

А вы гарантируете, что метод first вернёт нужный объект, если в таблице две похожих записи? Этого никто не гарантирует. Может возникнуть неопределённое поведение приложения, если запись не так...
19 мая 2018 г. 12:34
Pavel

Django - Snippet 001. get_object_or_none

Согласен с тем что ваше решение более очевидно при чтении кода. first() же здесь применяется не совсем по назначению. А с последствиями "моего" решения не согласен. Метод вернёт только один об...
19 мая 2018 г. 12:27
EVILEG

Как я использовал FilterView заместо ListView для упрощения фильтрации

Может быть, а может и нет, все имеют различную речь.. не могу отвечать за всех пользователей ресурса.. поскольку каждый пользователь может дополнить материал ресурса статьями.
19 мая 2018 г. 12:25
EVILEG

Django - Snippet 001. get_object_or_none

В вашем случае происходит подмена сущностей. Вместо того, чтобы взять один конкретный объект, вы забираете queryset а потом берёте из него первый объект. Нехорошо будет, если queryset в каком-...
19 мая 2018 г. 11:11
Pavel

Django - Snippet 001. get_object_or_none

Тоже искал подобную функцию, чтобы не обрабатывать каждый раз исключения. И нашёл на so совет использовать вместо неё метод менеджера first(), который возвращает None при пустом queryset. Т.е ...
Сейчас обсуждают на форуме
22 мая 2018 г. 16:50
vitaliy_antipov

Данные из QChartview в QTableWidget

Здравствуйте! Пишу приложение для парсинга текстового файла и вывода данных на график. Столкнулся с проблемой передачи данных от курсора мыши на графике в ячейку таблицы. mainwindow.h ...
22 мая 2018 г. 16:33
5_voron_5

Визуализация математических формул

Нужна помощь с визуализацией математических формул в qt на версии 5.4 и ниже, за деньги разумеется, кого интересует вот мыло svet_31_m@mail.ru
22 мая 2018 г. 6:57
EVILEG

Выводит мусор

Имено, класс-потомок. Если добавляли кнопки в графическом дизайнере, то нужно вызвать контекстное меню на кнопке в дизайнере, выбрать пункт "преобразовать в" либо "Promote to". Там будет ...
20 мая 2018 г. 2:05
vitaliy_antipov

Удаление серии из графика

Ой, извините, совсем запарился. Туплю: void MainWindow::onDelSeries(int i){ chartview->chart()->findChild<QLineSeries *>("obj" + QString::number(i))->deleteLater();...
18 мая 2018 г. 8:55
mak_trefa

Сборщик мусора и Connections в qml

можешь попробовать в деструкторе модели вызвать throw; и в дебагере посмотреть stacktrace

Рекомендуемые страницы