Я новичок, извините, если мой вопрос кажется глупым. Я использую 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 изображений составляют 189 МБ. Есть ли макс? OOM, ты про OutOfMemory? Вот в чем вопрос. dmesg - это команда Linux. Я на окнах.
Извините, я почему-то подумал, что вы на Linux. В Linux ОС убивает задачи, связанные с перегрузкой памяти, с помощью процесса, называемого OOM killer.
@drescherjm ах ладно. Спасибо за ваше объяснение. Приложение создано с использованием 32-битной версии MinGW, потому что это единственный доступный комплект. Не удалось узнать, как использовать 64-битный комплект. Память составляет 8 ГБ, а виртуальная память - 2 ГБ. Размер 1 изображения составляет от 1,5 до 4 МБ. Может ли помочь использование additemS вместо additem? Я где-то это читал. Но не могу заставить его работать.
Нет ли файла изображения большого размера? И все файлы изображения?
@talent_depeloper Нет, проблема не в этом, все файлы являются изображениями. Если я создаю эскизы, то отображаются все 400+ превью. Так что есть предел. Могу ли я сделать это быстрее?
Больше нет ответов, идей, решений? Как я могу использовать addtimes вместо additem?
сколько всего 77 изображений весят?