C++ 如果太多,则具有Pixmap的QtListWidgetItem将崩溃

C++ 如果太多,则具有Pixmap的QtListWidgetItem将崩溃,c++,qt,qlistwidget,qlistwidgetitem,C++,Qt,Qlistwidget,Qlistwidgetitem,我是个笨蛋,如果我的问题让人觉得愚蠢,我很抱歉。 我使用Qt Creator制作了一种图像查看器。 我添加了一个QListWidget,并添加了带有pixmap的项目。到目前为止,一切顺利。 现在我尝试读取hole目录并添加所有438个图像。 应用程序因以下消息而崩溃: Cn::Process::NotifyOutOfMemory()。17:47:36:该节目已经播出 出人意料地完成了。17:47:36:这一过程被迫结束 如果我把计数减少到85。该应用程序将打开,但只显示77幅图像 我试图通过将

我是个笨蛋,如果我的问题让人觉得愚蠢,我很抱歉。 我使用Qt Creator制作了一种图像查看器。 我添加了一个QListWidget,并添加了带有pixmap的项目。到目前为止,一切顺利。 现在我尝试读取hole目录并添加所有438个图像。 应用程序因以下消息而崩溃:

Cn::Process::NotifyOutOfMemory()。17:47:36:该节目已经播出 出人意料地完成了。17:47:36:这一过程被迫结束

如果我把计数减少到85。该应用程序将打开,但只显示77幅图像

我试图通过将addItem更改为addItems来修复此问题,但不知道如何在QList中或以任何其他方式获取QListWidgetItem。这是一个解决方案的问题

有人能朝正确的方向踢我一脚吗

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);
    }
}

Michael

这77张照片总共有多重?整个过程被迫结束。杀手??检查您的dmesg.77图像是否为189MB。有马克斯吗?哦,你的意思是“失忆”?这就是问题所在。dmesg是一个linux命令。我在windows上。对不起,不知什么原因,我以为你在linux上。在linux上,操作系统将通过一个名为OOM killer的进程终止占用内存的任务。77个映像的大小为189MB。有马克斯吗?总有一个最大值,但它取决于每个映像的大小,以及您是否正在开发32位或64位应用程序。windows中的32位应用程序在默认情况下将被限制为2GB的地址空间,无论您的计算机有多少虚拟内存。