QtListWidgetItem с Pixmap вылетает, если у многих

Я новичок, извините, если мой вопрос кажется глупым. Я использую Qt Creator для создания своего рода программы просмотра изображений. Я добавил QListWidget и добавил элементы с растровым изображением. Все идет нормально. Теперь я пытаюсь прочитать каталог отверстий и добавить все 438 изображений. Приложение вылетает с таким сообщением:

Cn::Process::NotifyOutOfMemory(). 17:47:36: The program has unexpectedly finished. 17:47:36: The process was ended forcefully.

Если я уменьшу количество до 85. Приложение откроется, но покажет только 77 изображений.

Я попытался исправить это, изменив addItem на addItems, но не знаю, как получить QListWidgetItem в QList или каким-либо другим способом. И тогда вопрос в этом и есть решение.

Может ли кто-нибудь дать мне толчок в правильном направлении?

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QDir dir("C:/");
    QStringList items; // String???
    foreach(QFileInfo var, dir.entryInfoList ()){
        if (var.isFile ()){
            //items += // What to do here ??
            ui->listWidget->addItem (new QListWidgetItem(QPixmap(var.absoluteFilePath ()), var.fileName ()));
        }
        ui->listWidget->addItems (items);
    }
}

Майкл

сколько всего 77 изображений весят?

eyllanesc 09.08.2018 18:00
Процесс был принудительно завершен. OOM убийца ?? проверьте свой dmesg.
drescherjm 09.08.2018 18:00

77 изображений составляют 189 МБ. Есть ли макс? OOM, ты про OutOfMemory? Вот в чем вопрос. dmesg - это команда Linux. Я на окнах.

Michael 09.08.2018 18:33

Извините, я почему-то подумал, что вы на Linux. В Linux ОС убивает задачи, связанные с перегрузкой памяти, с помощью процесса, называемого OOM killer.

drescherjm 09.08.2018 19:25
77 изображений составляют 189 МБ. Есть ли макс? Всегда есть максимум, однако он будет зависеть от размера каждого изображения и от того, разрабатываете ли вы 32- или 64-битное приложение. 32-битное приложение в Windows по умолчанию будет ограничено 2 ГБ адресного пространства независимо от того, сколько виртуальной памяти имеет ваш компьютер.
drescherjm 09.08.2018 19:49

@drescherjm ах ладно. Спасибо за ваше объяснение. Приложение создано с использованием 32-битной версии MinGW, потому что это единственный доступный комплект. Не удалось узнать, как использовать 64-битный комплект. Память составляет 8 ГБ, а виртуальная память - 2 ГБ. Размер 1 изображения составляет от 1,5 до 4 МБ. Может ли помочь использование additemS вместо additem? Я где-то это читал. Но не могу заставить его работать.

Michael 09.08.2018 21:58

Нет ли файла изображения большого размера? И все файлы изображения?

Talent Developer 10.08.2018 02:25

@talent_depeloper Нет, проблема не в этом, все файлы являются изображениями. Если я создаю эскизы, то отображаются все 400+ превью. Так что есть предел. Могу ли я сделать это быстрее?

Michael 10.08.2018 15:03

Больше нет ответов, идей, решений? Как я могу использовать addtimes вместо additem?

Michael 22.08.2018 11:01
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
9
166
0

Другие вопросы по теме