Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
Е
16 мая 2018 г. 3:52

Проблема с combobox

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

7

Добрый день!


Для этого нужно считать имена всех файлов в директории.
Потом подготовить список имён уже без дублей, с игнорированием расширения файла.
И после этого установить список в 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);
1
Е

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

0
Е

Спасибо)

1
Е

Добрый вечер! У меня ещё один маленький вопросик, как 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);

 

0
Е

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

0

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


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

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

0

Комментарии

Только авторизованные пользователи могут публиковать комментарии.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
v
17 января 2019 г. 11:51
vitalir12

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

  • Результат:20баллов,
  • Очки рейтинга-10
v
17 января 2019 г. 11:49
vitalir12

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

  • Результат:50баллов,
  • Очки рейтинга-4
v
17 января 2019 г. 11:13
vitalir12

C++ - Тест 003. Условия и циклы

  • Результат:28баллов,
  • Очки рейтинга-10
Последние комментарии
I
16 января 2019 г. 8:06
IscanderChe

Заработало. Забыл model->select(); вписать.
I
16 января 2019 г. 8:02
IscanderChe

Всё равно пусто, хотя строка с данными в базу добавляется.
16 января 2019 г. 7:51
Евгений Легоцкой

потому, что нужно сохранять информацию для всех остальных ролей и столбцов через вызов переопределённого метода. Да к тому же вы ещё и зациклили вызов метода data. QVariant MySqlTableModel:...
I
16 января 2019 г. 7:43
IscanderChe

Сделал вот так. В tableView ничего нет, кроме заголовка. QVariant MySqlTableModel::data(const QModelIndex &index, int role) const{ if (role == Qt::DisplayRole) { QTime ...
Сейчас обсуждают на форуме
18 января 2019 г. 11:26
nayk1982

Для Desktop делал так: void pause(int ms){ QTimer timer; timer.setInterval( qBound(1, ms, 3600000) ); timer.setSingleShot(true); QEventLoop loop; QObject::connect(&...
17 января 2019 г. 12:01
Алексей Внуков

у меня просто есть отдельное поле с чекбоксамими какие колонки нужно отображать CheckBox { id: checkBox text: qsTr("some text") checked: true onC...
15 января 2019 г. 16:53
Михаиллл

Спасибо, заработало.Но выдало обычный текст без форатирования HTML.Придется искать дальше
15 января 2019 г. 12:52
BlinCT

Я же вам выше написал CLion умеет работать с ремоут машинами. И Qt так же собирает.
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы